簡體   English   中英

為 Python 排序大文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM