【问题标题】:Writing List to CSV in Python在 Python 中将列表写入 CSV
【发布时间】:2020-12-07 14:09:21
【问题描述】:

我正在将数据从 PDF 写入 CSV。 CSV 需要有一列,每个单词在单独的行中。

下面的代码将每个单词写在单独的行中,但也将每个字母放在单独的单元格中。

with open('annualreport.csv', 'w', encoding='utf-8') as f:
    write = csv.writer(f)
    for i in keywords:
        write.writerow(i)

我还尝试了以下操作,它将所有单词写入一行,每个单词在一个单独的列中:

with open('annualreport.csv', 'w', encoding='utf-8') as f:
    write = csv.writer(f)
    write.writerow(keywords)

【问题讨论】:

  • keywords 是什么?
  • 您确定keyword 是字符串列表吗?看起来更像是一个字符串
  • 变量keywords表示的值是多少?请提供完整的编码器sn-ps,而不仅仅是给出错误的部分,它有很大帮助
  • 如果可能,请同时提供结果的 sn-p
  • writerow 将参数视为可迭代并将其元素写入一行。如果您想将每个单词写为一个元素行 - 只需更改为 write.writerow([i])

标签: python export-to-csv


【解决方案1】:

据我所知,writerow 需要一个数组。因此,一个单词被视为具有单个字母的数组->每个字母都写入一个新单元格。

将值放入单个数组应该可以解决问题:

with open('annualreport.csv', 'w', encoding='utf-8') as f:
    write = csv.writer(f)
    for i in keywords:
        write.writerow( [ i ] ) # <-- before: write.writerow(i)

【讨论】:

  • 这可行,但也会在每个单词之间添加一个空白行。知道为什么吗?谢谢!
【解决方案2】:
import csv 

# data to be written row-wise in csv fil 
data = [['test'], [try], ['goal']] 
# opening the csv file in 'w+' mode 
file = open('output.csv', 'w+', newline ='') 

# writing the data into the file 
with file:     
    write = csv.writer(file) 
    write.writerows(data) 

【讨论】:

    猜你喜欢
    • 2018-11-22
    • 2021-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-16
    • 2019-06-22
    • 2014-09-21
    相关资源
    最近更新 更多