Python:将两个不同的词典写入两个不同的csv文件

时间:2016-06-23 01:06:02

标签: python csv dictionary

我的程序会查看一个文本文件夹,并生成我正在查看“SS”和“DS”的两个功能的计数以及它们出现的次数。所以我设置了一个字典,列出了这个特征以及它在文本中出现的次数。

我希望我的SS字典写出一个csv文件和DS字典写出另一个csv文件。

到目前为止,这是我的代码:

import glob
import re

path = "tagged texts\*.txt"

#establish counts and dictionaries
list_SS = []
list_DS = []
SScounts = {}
DScounts = {}

#generate counts of the features
for file in glob.glob(path):
    line_count = 0
    with open(file, encoding='utf-8', errors='ignore') as file_in:
        text = file_in.readlines()
        for line in text:
            word = line.split('_')
            if word[2] == "SS":
                list_SS.append(word[0])
            elif word[2] == "DS":
                list_DS.append(word[0])

#create dictionary for SS and write out results to file
file1_out = open("SS_counts.csv", "w+")
for w in list_SS:
    SScounts[w] = SScounts.get(w,0) + 1
for i in sorted(SScounts, key = SScounts.get, reverse=True):
    file1_out.write(str(i) + "," + str(SScounts[i]) + "\n")

#create dictionary for DS and write out results to file
file2_out = open ("DS_counts.csv", "w+")
for w in list_DS:
    DScounts[w] = DScounts.get(w,0) + 1
for i in sorted(DScounts, key = DScounts.get, reverse=True):
    file2_out.write(str(i) + "," + str(DScounts[i]) + "\n")

SS字典出来很好,这就是csv文件中的结果:

nisha,41
rasha,19
rikusha,13
apisha,11
nishashi,8
...

问题是第二个文件,DS文件变成空白,其中没有任何内容。在对字典中的变量名称进行一些调整之前,我会得到写入两个文件的SS字典的结果。

我在询问我的教授后创建了两本词典,他说可以从一本词典中创建它,但使用两本词典会更简单。我想我可以为DS结果编写一个单独的python脚本,但我想在同一个脚本中同时执行这两个操作。

Sooo,这笔交易是什么?为什么第二个字典没有写到第二个文件?

1 个答案:

答案 0 :(得分:1)

StackOverflow的公民无法运行您的代码。创建其他人可以运行的Minimal, Complete, and Verifiable示例通常会有所帮助。

一个关键问题:list_SSlist_DS中是否有数据?删除以file1_out开头的所有代码,改为使用:

assert list_SS
assert list_DS

如果这些断言失败,那么你已经大大缩小了这个问题。

另一个关键问题:如果你消除了globbing和文件读取,你能重现这个问题吗?大概是这样的:

list_SS = []
list_DS = []
SScounts = {}
DScounts = {}

text = [
    'an example line from your data files...',
    'ditto...',
    '...',
]

for line in text:
    word = line.split('_')
    if word[2] == "SS":
        list_SS.append(word[0])
    elif word[2] == "DS":
        list_DS.append(word[0])

assert list_SS
assert list_DS

此时,您将拥有StackOverflow可以提供帮助的功能......但到那时您可能不需要我们。