如何将单词及其频率写入 CSV 文件中的两个单独的列

How do I write words and their frequencies into two separate columns in CSV file

我有所需的输入(一个 Counter 对象,来自我的 ),它看起来像这样:

 (u'twice', 4302),

 (u'thru', 4286),

 (u'mailing', 4276),

 (u'specifically', 4274),

等等

现在,我正在尝试将单词及其频率值写入 CSV 文件。我在下面尝试了以下代码,这是我从该站点上的类似问题中得到的:

with open("fiancee_wordfreq.csv" , "wb") as f:
     writer = csv.writer(f)  
     for val in cn:
         writer.writerow([val])

当我打开 Excel 中的 CSV 文件时,我发现只有单词而不是它们的频率。所以,"specifically" 是 A 列中列出的单词之一,但不是 4274。我想在 A 列中包含单词,在 B 列中包含频率,但我无法获得频率显示在全部.

遍历 Counter 就像遍历字典一样——您只能得到键。 writerow() 需要一个序列,所以 val 是不够的,但是将它括在方括号中使 list[val] 只允许您将该键写为单个列.使用 items() 方法获取键及其关联值:

with open("fiancee_wordfreq.csv" , "wb") as f:
     writer = csv.writer(f)  
     for pair in cn.items():
         writer.writerow(pair)

或者使用每个键索引 Counter:

with open("fiancee_wordfreq.csv" , "wb") as f:
     writer = csv.writer(f)  
     for val in cn:
         writer.writerow([val, cn[val]])