我已經開始學習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)',但這給了一個錯誤 –