正在为 Python 排序大文件

Sorting huge file for Python

我为 Python3 实现了 Binary Search Algorithm。问题是它需要根据 Pythons 字符串比较逻辑对文件进行排序。 Bash sort 不会那样做。示例:

aa      first
aaA     second
aaa     third

此文件根据 Python3 正确排序,因为 'aa' < 'aaA' < 'aaa'

如果我使用 bash (sort --key=1 --field-separator=$'\t' file.txt) 对其进行排序,我得到:

aaA     second
aaa     third
aa      first

是否有一种高效 方法来为 Python 排序大文件 'correctly'?

教我的算法 bash 字符串比较方法会更容易吗?

bash 顺序取决于您的喜好。您的排序偏好可以通过

找到
echo "LC_ALL"

当我使用

export LC_ALL=en_US.UTF-8

我收到了您的 "wrong" 订单。 这可以是 "fixed" by

export LC_ALL=C

# wrong: LC_ALL=C sort --key=1 --field-separator=\t file.txt

编辑: @mivk 回答了一些更正,命令应该是

LC_ALL=C sort --field-separator=$'\t' file.txt

sort 使用您的 locale 的排序规则。显然,您需要 "C" 式排序。

因此请更改您的语言环境,只为您的排序命令:

LC_ALL=C sort $your_file

此外,您无需指定 --key=1,因为它是默认值。

并且 --field-separator=\t 没有将其设置为制表符,而是普通的 "t"。如果需要指定制表符,可以写--field-separator=$'\t'.