使用Python将变量写入csv行

2024-09-28 20:17:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我的python脚本计算单词列表在文本中出现的次数。脚本可以工作,但当我试图在一个用分号分隔的CSV文件中写入结果时,它不起作用。在

我的代码:

import csv
wordslist = ["Bob", "car"]
text = "Bob loves his Mustang car, but Bob wants a Ferrari car because Ferrari is a fastest car."
for word in wordslist :
    resultCar = str(word) + "; " + str(text.count(word))
    print resultCar
    carCountsCsv = open("carcounts.csv", "wb")
    with carCountsCsv:
        writer = csv.writer(carCountsCsv)
        writer.writerow(resultCar)

我的CSV文件结果是:

^{pr2}$

我不明白为什么我的结果会出现在同一行中,我希望在控制台中有这样的结果:

Bob;2
car;3

任何帮助都将不胜感激


Tags: 文件csvtext脚本单词carwordwriter
2条回答

首先,在循环之前打开该文件一次,否则将覆盖上一行并最终生成只包含最后一行的文件。在

with open("carcounts.csv", "w") as carCountsCsv:

然后,由于您希望;作为CSV文件中的分隔符,所以不需要使用csv_writer。您已经用正确的分隔符创建了一个字符串。只需将行写入普通文件即可。在

^{pr2}$

如果确实要使用CSV库,则需要在创建writer时向其传递所需的分隔符。然后向它传递一个包含每行元素的列表,它将为您添加分隔符。在

with open("carcounts.csv", "w", newline='') as carCountsCsv:
    writer = csv.writer(carCountsCsv, delimiter=';')
    for word in wordslist:
        resultCar = [str(word), str(text.count(word))]
        print(resultCar)
        writer.writerow(resultCar)

请注意,当您打开文件时,请指定newline=''csv.writer将为您添加新行。如果您忘记了这一点,您将在您的CSV文件中得到两个换行符。在

由于您的输出已经是CSV,所以考虑一下raw pipe。假设我们的文件名为bob_car.py。在

wordslist = ["Bob", "car"]
text = "Bob loves his Mustang car, but Bob wants a Ferrari car because Ferrari is a fastest car."
for word in wordslist:
    print "%s; %i" % (word, text.count(word))

然后简单地做:

^{pr2}$

相关问题 更多 >