为Python排序巨大的文件

问题描述 投票:-1回答:2

我为Python3实现了二进制搜索算法。问题在于它需要根据Python的字符串比较逻辑对文件进行排序。重击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“正确”排序大文件?

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

python bash sorting python-3.7
2个回答
1
投票

sort使用您的locale规则进行排序。显然,您需要“ C”样式的排序。

因此更改您的语言环境,仅用于您的排序命令:

LC_ALL=C sort $your_file

此外,由于它是默认设置,因此您无需指定--key=1

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


2
投票

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

找到
echo "LC_ALL"

我使用时

export LC_ALL=en_US.UTF-8

我得到您的“错误”订购。可以通过

“固定”
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
© www.soinside.com 2019 - 2024. All rights reserved.