【问题标题】:how to sort this python code alphabetically如何按字母顺序对这个python代码进行排序
【发布时间】:2013-09-15 00:42:39
【问题描述】:

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

回溯(最近一次通话最后一次): 文件“D:\Eclipse Workspace\tugas1\src\h.py”,第 15 行,在 对于 set(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()

【问题讨论】:

  • 稀疏优于密集
  • 谁知道呢,他可能一直在关注“平面比嵌套更好”。 :)
  • @Shashank 多几行代码不会嵌套。
  • @Voo 没错,说得好。

标签: python sorting input word output


【解决方案1】:

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

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

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

【讨论】:

  • @kindall ok,现在没有错误了。但这个词仍然没有按字母顺序排序。你介意为什么吗?
  • 好吧,您将其转换为set,在您对其进行排序后,它不会保持顺序。也许你想反过来做?
  • @kindall 我只想按字母顺序从文本中排序并将答案保存到输出文件中。你能帮帮我吗?
  • 如果您不需要一套,请拨打set() 电话。
【解决方案2】:

.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

...

稀疏优于密集。不要试图将所有内容放在一行中

【讨论】:

  • 对不起,我是 python 新手。你能修复我的代码吗?谢谢
  • @vynz5 并非没有看到您要读取的文件的内容
  • 我没有看到任何变化。这个词仍然是未排序的(就像我写像@kindall这样的l.sort()一样)。
  • @vynz5 在l.sort() 之前,放置print l。出现什么?
  • 就像您将文本拆分成单词一样
猜你喜欢
  • 1970-01-01
  • 2013-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-07
  • 2011-08-29
  • 2010-11-23
  • 1970-01-01
相关资源
最近更新 更多