我需要编写一个程序来提示用户输入任何文件名,逐行加载数据,删除所有重复的行,按字母顺序对行进行排序,然后将其余行写入另一个文件。
我已经完成了大部分代码,但是我正在努力按字母顺序对行进行排序。有什么建议吗?
提前感谢您的帮助!
def deleteDuplicateRecords(fileName):
try:
newFileName="filtered_"+fileName
with open(fileName,'r') as readFile, open(newFileName,'w') as writeFile:
lineSet = set()
for line in readFile:
if line not in lineSet:
lineSet.add(line)
writeFile.write(line)
readFile.close()
writeFile.close()
print(f"Duplicate rows removed succesfully. Open the new file '{newFileName}'")
except FileNotFoundError:
print("File Not Found")
name = input("Enter the name of the text file including the proper extension (.txt, .csv, etc): ")
print()
deleteDuplicateRecords(name)
答案 0 :(得分:1)
这应该有效:
def deleteDuplicateRecords(fileName):
try:
newFileName="filtered_"+fileName
with open(fileName,'r') as readFile, open(newFileName,'w') as writeFile:
for sorted_line in sorted({line for line in readFile}):
writeFile.write(sorted_line)
print(f"Duplicate rows removed successfully. Open the new file '{newFileName}'")
except FileNotFoundError:
print("File Not Found")
一些注意事项:
with
,则在作用域结束时,这将自动关闭文件。sorted
函数对结果进行排序{line for line in readFile}
行使用set comprehension从文件的各行以更简洁的方式创建一个集合。答案 1 :(得分:0)
sorted
将集合排序,这将返回一个列表BTW使用with语句意味着您无需手动关闭文件。
答案 2 :(得分:0)
您可以阅读本文档的所有排序方法。 https://docs.python.org/3/howto/sorting.html 返回后,将排序到您的输出中。