所以我在文件中有以下输出(数千行) input.txt中
2956:1 1076:1 4118:1 1378:1 2561:1
1039:1 1662:1
1948:1 894:1 1797:1 1662:1
问题是我需要让每一行按升序编号
期望的输出: output.txt的
1076:1 1378:1 2561:1 2956:1 4118:1
1039:1 1662:1
894:1 1662:1 1797:1 1948:1
这对于实现它是一个真正的挑战,我正在寻找一个python函数来为我做这件事。这些行必须保持原样,但每行必须按升序排序(就像输出一样)。
关于如何做到这一点的任何想法?
答案 0 :(得分:11)
with open('input.txt') as f, open('output.txt', 'w') as out:
for line in f:
line = line.split() #splits the line on whitespaces and returns a list
#sort the list based on the integer value of the item on the left side of the `:`
line.sort(key = lambda x: int(x.split(':')[0]))
out.write(" ".join(line) + '\n')
<强>输出:强>
1076:1 1378:1 2561:1 2956:1 4118:1
1039:1 1662:1
894:1 1662:1 1797:1 1948:1
答案 1 :(得分:2)
不确定python,但总的来说,我将每一行作为&#34;记录&#34;那么&#34;爆炸&#34;将行放入由空格分隔的数组(或正则表达式,一组空格或制表符,或任何分隔符),然后是一个简单的数组排序,然后&#34; implode&#34;回到一个字符串。
我的&#34;报价&#34;等同于PHP函数。
答案 2 :(得分:1)
一种方法是这样的:
def sort_input(input_file):
for line in input_file:
nums = line.strip().split()
nums.sort(key=lambda x: int(x.split(':')[0]))
print ' '.join(nums)