2012-12-25 42 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