2012-12-25 51 views
0

我有一個關於獲得列表中項目字數的最佳方法的問題。Python提取Word/Token從列表中的項目計數?

我有400多個項目在列表中索引。它們的長度各不相同。例如,如果我列舉的話,我將獲得:

for index, items in enumerate(my_list): 
    print index, items 

0 fish, line, catch, hook 
1 boat, wave, reel, line, fish, bait 
. 
. 
. 

每個項目將獲得寫進一個CSV文件中各行。我希望相應的字數能夠補充相鄰列中的文字。我可以使用Excel查找單詞/標記計數,但我希望能夠在Python中執行此操作,因此我不必在程序之間來回處理數據。

我確定有幾種方法可以做到這一點,但我似乎無法拼湊出一個好的解決方案。任何幫助,將不勝感激。

+0

我想你正在尋找'collections.counter()',或者可能是'len(items.split(「,」))'。 –

+0

您是否正在閱讀CSV文件?或者計算其內容? – Johnsyweb

+4

預期產量是多少? – Himanshu

回答

0

正如張貼在評論,這不是真的清楚你的目標是在這裏什麼,但如果是打印有每行一個字,每個字的長度沿csv文件,

import csv 
with open(filename, 'w') as outfile: 
    writer = csv.writer(outfile) 
    writer.writerow(['Word', 'Length']) 
    for word in mylist: 
     writer.writerow([word, str(len(word))]) 

如果我誤解在這裏,實際上你有什麼是每個字符串包含逗號分隔的話,你會想要做什麼,而不是一個列表字符串列表:

import csv 
with open(filename, 'w') as outfile: 
    writer = csv.writer(outfile) 
    writer.writerow(['Word', 'Length']) 
    for line in mylist: 
     for word in line.split(", "): 
      writer.writerow([word, str(len(word))]) 
0

如果我undertstand正確,你正在尋找:

import csv 

words = {} 
for items in my_list: 
    for item in items.split(', '): 
     words.setdefault(item, 0) 
     words[item] += 1 

with open('output.csv', 'w') as fopen: 
    writer = csv.writer(fopen) 
    for word, count in words.items(): 
     writer.writerow([word, count]) 

這將寫入一列中具有唯一字的CSV以及下一列中該字的出現次數。

這是你要求的嗎?

+0

其實,我只需要提取字數。不過,你給了我一個更好的方法來格式化我的csv.writer代碼。謝謝。 – user1882766