正在为 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'
.
我为 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'
.