如何按字母顺序排序此python代码

时间:2013-09-15 00:42:40

标签: python sorting input word output

我已经尝试过按字母顺序对这些代码进行排序,但仍然无法正常工作。 tis是错误消息:

追踪(最近一次通话):   文件“D:\ Eclipse Workspace \ tugas1 \ src \ h.py”,第15行,in     对于集合(l)中的单词: TypeError:'NoneType'对象不可迭代

这里是代码:

from re import compile

l=compile("(\w[\w']*)").findall(open(raw_input('Input file: '),'r').read().lower()).sort()

f=open(raw_input('Output file: '),'w')

for word in set(l):

    print>>f, word, ':', '\t', l.count(word), 'kata'

f.close()

2 个答案:

答案 0 :(得分:2)

问题是.sort()。它对列表进行了排序并返回None,因此这是分配的结果。 l始终为None.。在所有其他事情之后,单独进行排序。

l=compile("(\w[\w']*)").findall(open(raw_input('Input file: '),'r').read().lower())
l.sort()

顺便说一句,如果您只是想使用一次,则无需编译正则表达式。不过这样做没有坏处。

答案 1 :(得分:1)

.sort()对列表进行排序。它不返回排序列表。因为它没有,它默认返回None

因此,l = None。你不想要这个。

您的代码应为:

from re import compile
l = compile("(\w[\w']*)")
with open(raw_input('Input file: '),'r') as myfile:
    content = myfile.read().lower()
    l = l.findall(content)
    l.sort() # Notice how we don't assign it to anything

...

稀疏优于密集。不要试图把所有东西放在一行