我已经尝试过按字母顺序对这些代码进行排序,但仍然无法正常工作。 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()
答案 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
...
稀疏优于密集。不要试图把所有东西放在一行