我已经开始学习python,并被困在有关操作文本数据的赋值上。文本行的一个例子,我需要处理:使用多个拆分选择文本
From [email protected] Sat Jan 5 09:14:16 2008
我需要从每一行提取小时(在这种情况下,09),然后找到最常见小时电子邮件发送的。
基本上,我需要做的是建立一个for循环,通过结肠
split(':')
将每个文本,然后通过空间分割:
split()
我试过好几个小时,但似乎无法弄清楚。我的代码看起来像至今:
name = raw_input("Enter file:")
if len(name) < 1 : name = "mbox-short.txt"
handle = open(name)
counts = dict()
lst = list()
temp = list()
for line in handle:
if not "From " in line: continue
words = line.split(':')
for word in words:
counts[word] = counts.get(word,0) + 1
for key, val in counts.items():
lst.append((val, key))
lst.sort(reverse = True)
for val, key in lst:
print key, val
上面的代码只做1分,但我一直尝试多种方法来再次分裂的文本。我不断收到一个列表属性错误,说“列表对象没有属性拆分”。希望对此有所帮助。再次感谢
'line.split(“:”)[0] .split(“”)[ - 1]'? – L3viathan
通常,为了开发,尤其是共享代码,请将示例数据放入程序本身。然后其他人可以运行并修改你的代码。在这种情况下,'handle = <行列表>'只需几行。 FWIW,我相信@ L3viathan snippet会解决你的特殊问题。 –
感谢您的帮助!然而,由于某些原因,代码只输出一位数字,这使数字1和0在计数中显示很多(因为它们是第一位数字)。我如何计算两位数?我试图使它'line.split(“:”)[0] .split(“”)(0:2)',但这给了一个错误 –