gpt4 book ai didi

python - 计算 CSV 列中单词的出现次数并写入另一个 CSV?

转载 作者:行者123 更新时间:2023-11-28 17:43:10 26 4
gpt4 key购买 nike

我一直在做一个程序来打开一个 CSV 文件,统计“信息”、“低”、“中”、“高”和“严重”这些词出现的次数,并得到结果写入不同的 CSV。 future ,我希望它能够针对此信息解析多个格式相同的 CSV,并将所有结果写入一个 CSV。这是我目前所拥有的:

import sys
import csv
import collections

severity = collections.Counter()
with open(r'C:\Report.csv', 'r') as f:
reader = csv.reader(f)
for row in reader:
severity[row[3]] +=1

print(severity.most_common)
with open(r'C:\test.csv', 'a', newline='') as write_file:
sevwrite = csv.writer(write_file, delimiter= ',',
quotechar=' ', quoting=csv.QUOTE_MINIMAL)
sevwrite.writerow([severity.most_common])

它写完整

<bound method Counter.most_common of Counter({'Info': 510, 'Medium': 30, 'Low': 24, 'High': 7, 'Severity': 1})>

进入 Test.CSV 文件。感谢您的帮助。

最佳答案

您需要调用 most_common 方法:

print(severity.most_common())

sevwrite.writerow(severity.most_common())

这也不会完全写出您想要的内容,因为 .most_common() 方法返回一个元组列表;每个元组一个键和相应的计数。结果,上面的 sevwrite.writerow() 调用(没有列表文字 [...])将写入:

('Info', 510),('Medium', 30),('Low', 24),('High', 7),('Severity', 1)

到文件。因为 .most_common() 按排序顺序(从最高计数到最低计数)返回此列表,不同的输入 CSV 很可能会导致不同的严重性排序。

如果输出 CSV 文件中的每一行都包含计数,您可能希望让列保持相同的一致顺序。您也不需要包含严重性键;那可能是 CSV 文件头的一部分。

我会在这里使用 csv.DictWriter():

with open(r'C:\test.csv', 'a', newline='') as write_file:
sevwrite = csv.DictWriter(write_file, ('High', 'Severity', 'Medium', 'Info', 'Low'))
sevwrite.writerow(severity)

现在只会为每个键写入计数,每次都在同一列中。 csv.DictWriter() 的第二个参数设置值写入列的顺序。

请注意,您也可以在这里简化阅读:

import csv

from collections import Counter

with open(r'C:\Report.csv', 'r') as f:
reader = csv.reader(f)
severities = Counter(r[3] for r in reader)

这里就是构建 Counter 对象所需的一切。

现在,要对输入文件的系列 执行此操作,您可以使用:

import csv

from collections import Counter

with open(r'C:\test.csv', 'w', newline='') as write_file:
sevwrite = csv.DictWriter(write_file, ('High', 'Severity', 'Medium', 'Info', 'Low'))
sevwrite.writeheader()

for filename in list_of_filenames:
with open(r'C:\Report.csv', 'r') as f:
reader = csv.reader(f)
severities = Counter(r[3] for r in reader)
sevwrite.writerow(severities)

这里打开输出文件进行写入(不是追加);这使我们有机会使用 sevwrite.writeheader() 在顶部添加标题行。

关于python - 计算 CSV 列中单词的出现次数并写入另一个 CSV?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21837225/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com