需要帮助按字母顺序排序我的文件,只需一个简单的代码

时间:2015-04-20 15:55:49

标签: python sorting

f = ("name list.txt","r")
f.sort()
for lines in f:
   print(f)

这会显示错误消息

  

"元组"对象没有属性f.sort()

3 个答案:

答案 0 :(得分:1)

假设这是python,

f = ("name list.txt","r")

不是你想要的。这里的括号创建了两个字符串的元组。我相信你打算这样做:

f = open("name list.txt","r")

这不会解决您的问题,因为文件对象也没有sort方法,但它是朝着正确方向迈出的一步。您可能正在寻找lines = f.readlines(); lines.sort()

答案 1 :(得分:1)

短版

您应该打开该文件,然后使用sorted函数进行非就地排序,然后将其存储到变量中:

with open("name list.txt","r") as fobj:
    res = sorted(fobj)

res将是你想要的,一个排序的list字符串。

更详细的解释

sorted会自动浏览文件中的每一行,从该行中提取文本,然后对所有行进行排序。这是因为,在Python中,文件被认为是可迭代的,你可以逐行循环(如for line in fobj),sorted接受迭代。

使用

with是因为它会在一切都结束时安全地关闭文件,即使有异常也是如此。 fobj = open("name list.txt","r")要求您记得事后关闭它,如果有异常,可能会关闭。 with为您解决所有问题。

如果您不想在每行末尾添加换行符,请执行以下操作:

with open("name list.txt","r") as fobj:
    res = sorted(line.strip('\n') for line in fobj)

这基本上与上面相同,只是它遍历每一行并在排序前去除换行符。

答案 2 :(得分:0)

这是我能想到的最简单的方法来做你想做的事情:

with open("name list.txt", "r") as f:
    for line in sorted(f.read().splitlines()):
       print(line)