[英]Sorting huge file for Python
我為 Python3 實現了一個二分搜索算法。 問題是它需要根據 Python 的字符串比較邏輯對文件進行排序。 Bash sort
不會這樣做。 例子:
aa first
aaA second
aaa third
該文件根據 Python3 正確排序,因為'aa' < 'aaA' < 'aaa'
如果我使用 bash ( sort --key=1 --field-separator=$'\\t' file.txt
)對其進行sort --key=1 --field-separator=$'\\t' file.txt
,我會得到:
aaA second
aaa third
aa first
有沒有一種有效的方法可以為 Python“正確”地對大文件進行排序?
教我的算法 bash 字符串比較方法會更容易嗎?
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
sort
使用您的locale
的排序規則。 顯然,您想要“C”風格的排序。
所以改變你的語言環境,只為你的排序命令:
LC_ALL=C sort $your_file
此外,您不需要指定--key=1
因為它是默認值。
並且--field-separator=\\t
不會將其設置為制表符,而是將其設置為普通的“t”。 如果需要指定制表符,可以寫--field-separator=$'\\t'
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.