【问题标题】:Lists of lists to csv?列表到csv的列表?
【发布时间】:2016-03-21 21:08:20
【问题描述】:

我遇到了 Python 的 csv 模块的问题。 确实,我有一个文本语料库。我已将其转换为看起来像列表的列表。例如,我的数据如下所示

data = ["Hello", "how", "are", "you"]
["Fine", "and" ,"you"]

我想将数据导出到 csv 文件或文本文件。

但是,当我使用 csv 模块的 .writerow() 方法时,它只会返回一个语料库列表,我不明白为什么(它甚至不是语料库的第一个......)

这是我的代码

import csv
with open('twitter_test_python.csv',"r", encoding='utf8') as csvfile:
    spamreader = csv.reader(csvfile , delimiter=" ", quotechar = "'")
    for line in spamreader:
        test = list(set(line) - set(swl))
        with open("test2.csv", 'w', encoding = 'utf8') as myfile :
            wr = csv.writer(myfile)#, delimiter=';', quoting=csv.QUOTE_ALL, lineterminator = '\n') 
            wr.writerow([test])

有人了解我的问题吗?

非常感谢,

【问题讨论】:

  • 为什么倒数第二行有个#?
  • @Muctadir,我猜它们是.writer() 的可选参数,他在测试时省略了这些参数,但留在那里供参考,或者如果他以后可以添加它们所以选择。我在调试时做同样的事情,我正在测试我的附加参数是否有问题。
  • 是的,# 用于调试我的代码。我在发帖前收回了很多#,但我想我没有注意到这个。

标签: python csv text


【解决方案1】:

每次执行循环时都会覆盖文件:

for line in spamreader():

尝试将输出文件的开头移到循环之外:

import csv
with open('twitter_test_python.csv',"r", encoding='utf8') as csvfile:
    spamreader = csv.reader(csvfile , delimiter=" ", quotechar = "'")
    with open("test2.csv", 'w', encoding = 'utf8') as myfile :
        wr = csv.writer(myfile)#, delimiter=';', quoting=csv.QUOTE_ALL, lineterminator = '\n')
        for line in spamreader:
            test = list(set(line) - set(swl)) 
            wr.writerow([test])

这样您就不会每次都打开输出文件并覆盖它。

【讨论】:

  • 非常感谢!现在效果很好;)确实是我的循环有问题。
猜你喜欢
  • 2019-05-04
  • 2019-09-25
  • 2017-07-20
  • 1970-01-01
  • 1970-01-01
  • 2020-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多