我的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文件结果是:
c,a,r,;, ,3
我不明白为什么我的结果出现在同一行中,我想要在控制台中得到这样的结果:
Bob;2
car;3
任何帮助将不胜感激
答案 0 :(得分:2)
由于您的输出已经是CSV,请考虑使用原始管道。假设我们的文件名为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))
然后只需:
python bob_car.py > carcounts.csv
答案 1 :(得分:1)
首先,在循环之前打开文件一次,否则将覆盖上一行,最后得到一个仅包含最后一行的文件。
array = [4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 99]
p array.map.with_index { |n, i| i.odd? ? n * 2 : n } # WRONG RESULT
#=>[4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 99]
p array.reverse.map.with_index { |n, i| i.even? ? n * 2 : n }.reverse
#=>[8, 2, 8, 2, 8, 2, 8, 2, 8, 2, 8, 2, 8, 2, 8, 2, 198]
然后,由于您希望with open("carcounts.csv", "w") as carCountsCsv:
作为CSV文件中的分隔符,因此不需要使用;
。您已经使用正确的分隔符创建了一个字符串。只需将这些行写入普通文件即可。
csv_writer
如果要使用CSV库,则需要在创建编写器时将所需的定界符传递给它。然后,向它传递一个包含每一行元素的列表,它将为您添加定界符。
with open("carcounts.csv", "w") as carCountsCsv:
for word in wordslist :
resultCar = str(word) + "; " + str(text.count(word)) + "\n"
print(resultCar)
carCountsCsv.write(resultCar)
请注意,打开文件时,请指定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文件中将出现双换行符。