我创建了一个代码,它将一个包含6个随机数的列表附加到一个文本文件中,其中包含一些规则,如3赔率& 3均匀,2赔率& 3甚至等等。
有没有办法对文本文件中的列表进行排序?例如:
如果我有这样的文本文件:
[2, 3, 4]
[2, 4, 5]
[3, 1, 2]
[1, 3, 4]
[1, 2, 3]
我想安排/排序:
[1, 2, 3]
[1, 3, 4]
[2, 3, 4]
[2, 4, 5]
[3, 1, 2]
到目前为止我的解决方案(但我不知道如何应用它):
只需将1 2 3
与[1, 2, 3]
不同,以便我可以在.split()
迭代所有第一个数字并排序
如果第一个数字等于另一个第一个数字:
检查谁具有较低的第二个数字并将其移到顶部
如果第二个数字相等:
检查谁拥有较低的第3个数字并将其移至顶部
等等。
答案 0 :(得分:3)
只需排序为列表。你不必担心迭代。
with open('test.txt', 'r') as text:
nums = [ast.literal_eval(i) for i in text]
data = [str(i) + '\n' for i in sorted(nums)]
with open('test.txt', 'w') as text:
text.writelines(data)
答案 1 :(得分:0)
从名为original.txt
的文件中读取列表,并将排序后的结果写入名为sorted.txt
的文件中:
with open('original.txt') as f, open('sorted.txt', 'w') as g:
unsorted_lists = map(eval, f.read().splitlines())
sorted_lists = sorted(unsorted_lists)
g.write('\n'.join(map(str, sorted_lists)))
答案 2 :(得分:0)
您可以将文件读取为行,对它们进行排序并将其写回:
out = open("out","w")
for i in sorted(open("in").readlines()):
if i[-1] != "\n":
i+="\n"
out.write(i)
out.close()
答案 3 :(得分:0)
Python中的列表与您所描述的排序相当:
>>> [1,2,3] < [1,2,4]
True
>>> [1,2,3] >= [1,3,3]
False
如果您在Python中开始生成文本文件,则可以在编写文件之前对列表进行排序。或者您可以读取文件并解析每一行,然后对其进行排序。如果您不信任该文件的内容,则可以使用json module将每一行解析为JSON。
这比使用字符串比较进行排序更有效,因为字符串比较会因数字位数不同的数字而中断。