我有一个包含以下行的文件
aaaaa
bbbbbb
cccc
dddddd
1234
33444
00000
我想对文件进行排序并将输出写入同一文件。到目前为止我的代码:
file = open("a")
column = []
for line in file:
column.append(int(line.split("\t")[3]))
column.sort()
print(column)
file.close()
答案 0 :(得分:1)
将排序逻辑提取到函数
是个好主意def keyfunc(line):
## You need to fix this function, since your code doesn't really
## make sense for your sample data
try:
return int(line.split("\t")[3])
except:
return 0
with open("a") as fin:
content = sorted(fin, key=keyfunc)
with open("a", "w") as fout:
fout.writelines(content)
对于此示例,您的数据文件实际上没有排序,因为每行都会有索引错误。我建议您如果需要更多帮助来制定应该进入keyfunc
答案 1 :(得分:-1)
这很简单。以下是您可能想要的样本
# open the file
file = open(filename,'r') # the "r" means for reading
contents = [] # make a list to store our contents in
for line in file: # loop through each line in the file
contents.append(line) # and load in its contents
sort(contents) # this is in place, it does not return anything
file.close()
file = open(filename,'w')
file.write(''.join([str(item)+'\n' for item in contents]))
file.close() # publishes the content
这是自定义比较器上的stackoverflow页面。您需要查看它以了解如何以特定方式对列表进行排序。
Python: sort an array of dictionaries with custom comparator?
你也应该看看倒数第二行 - 它有点复杂,它使用列表推导将项目推回一个字符串。一个更简单的方法就是循环并编写每个项目,但我想我会给你一个有趣的版本:)
请注意,这只会在每行加载您的文件。要以不同的标准查看文件,您需要使用其他方法。一种天真的方式是加载整个文件并根据你描绘的任何东西进行拆分。
你应该看看https://docs.python.org/2/tutorial/inputoutput.html开始了解python中的文件IO,这很简单。