【发布时间】:2013-09-07 14:36:43
【问题描述】:
我有一个排序文件列表,其中数据由 '\n' 分隔我想将它们合并在一起以获得单个排序文件。我不想一次加载所有文件的内容。我正在使用 heapq 库的合并功能
我写了以下代码
def merge(*flist):
for element in heapq.merge(*flist):
yield element
其中 *flist 是这样的元组 -
(<open file '/tmp/000000', mode 'w+b' at 0xb73eba70>,
<open file '/tmp/000001', mode 'w+b' at 0xb73ebac8>,
<open file '/tmp/000002', mode 'w+b' at 0xb73ebb20>,
<open file '/tmp/000003', mode 'w+b' at 0xb73ebb78>,
<open file '/tmp/000004', mode 'w+b' at 0xb73ebc80>)
当我在循环中打印上面的元素时,我得到的值是 '2\n'、'44\n'。输出文件也不按排序顺序。我认为问题是由于换行符造成的。如何解决这个问题。
我试图解决这个问题已经很久了,但无法解决它
【问题讨论】:
-
输入文件中的数据是否按数字排序?
-
您希望按 ascii 字典顺序还是数字顺序进行排序?您可能需要将输入元素转换为整数。
-
请发布一些示例数据和预期输出。
-
@1_CR 是的,tmp 中的所有文件都按数字排序
-
对于字符串:
'100' > '2'是False,首先将它们转换为整数。
标签: python sorting python-2.7