python文件排序做法,如何用python对文件中的内容进行排序

你实际上有两个问题。

最大的问题是print sorted(file_handle)读取并排序文件的其余部分,然后打印出来。你每行一次。所以,结果是你读了第一行,分割它,忽略结果,排序并打印第一行之后的所有行,然后就完成了。

你想做的是在你进行的过程中积累所有的单词,然后分类并打印出来。像这样:def sorting(self):

filename = ("food.txt")

file_handle = open(filename, "r")

words = []

for line in file_handle:

words += line.split()

file_handle.close()

print sorted(words)

或者,如果要一次打印一行排序的列表,而不是作为一个大列表,请将最后一行更改为:print '\n'.sorted(words)

对于第二个更小的问题,也就是你问的那个问题,你只需要从换行符中strip。因此,将words +=行改为:words += line.strip().split()

然而,如果你解决了第一个问题,你甚至不会注意到这个问题。如果你有一条像"one two three\n"这样的线,并且你在它上面调用split(),你将得到["one", "two", "three"],而不需要担心\n。所以,你甚至不需要用eem来解决这个问题。

在我们的工作中,您还可以在这里做一些其他改进:使用with语句关闭文件,而不是手动执行。

将这个函数return设为单词列表(这样您就可以用它做各种不同的事情,而不是只打印它而不返回任何内容)。

将文件名作为参数,而不是硬编码(以获得类似的灵活性)。

也许可以把循环转化为理解,但这需要一个额外的“扁平化”步骤,所以我不确定它是否值得。

如果不需要重复的单词,请使用set,而不是list。

根据用例的不同,您通常希望使用rstrip()或rstrip('\n')来删除后面的换行符,同时保留段落缩进选项卡或空格。但是,如果你在寻找个别的词,你可能不想要。

您可能需要过滤掉和/或拆分非字母字符,这样就不会将"that."作为一个单词。即使是这种基本的自然语言处理也是非常重要的,所以这里不举一个例子。(例如,您可能希望"John's"是一个单词,您可能希望"jack-o-lantern"是一个单词而不是三个;您几乎肯定不希望"two-three"是一个单词…)

self参数只在类的方法中需要。这似乎不在任何班级。(如果是的话,它不会对self做任何事情,因此没有可见的原因使它在类中。当然,您可能有一些在您的大型程序中可见的原因。)

所以,无论如何:def sorting(filename):

words = []

with open(filename) as file_handle:

for line in file_handle:

words += line.split()

return sorted(words)

print '\n'.join(sorting('food.txt'))

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值