【问题标题】:How to turn a list into a column in a csv?如何将列表转换为csv中的列?
【发布时间】:2018-11-24 01:27:52
【问题描述】:

目前我有一个填充列表

list =[a, b, c, d]

我想将列表的内容转换为 csvfile,并让列表的所有元素成为一列。这是我当前的代码:

with open('twitter3.csv', 'w+') as csvfile:
    writer = csv.writer(csvfile, dialect='excel')
    writer.writerow(list)

输出的 csv 文件包含列表的元素,但正如方法所暗示的,它已将所有内容写入第一行。

我尝试过创建一个 for 循环来编写每个 element + \n,但 writerow 方法存在问题(在每个字母后放置逗号),并且没有 writecolumn 方法用于 csvwriter

【问题讨论】:

  • 还有其他栏目吗?
  • @ShadowRanger 对迟到的回复感到抱歉。我目前没有任何其他专栏,但将来可能会有。我决定只依赖熊猫

标签: python list csv


【解决方案1】:

要执行此任务,我将使用pandas 包,如下所示:

import pandas as pd
l=["a","b","c","d"]
df=pd.DataFrame(l,index=False,header=False)
df.to_csv("twitter3.csv")

pandas 也非常适合阅读 csv 甚至处理 Excel 文件。

【讨论】:

  • 我认为这是要走的路。似乎 csv 库只是一件苦差事。除了这个之外,没有任何建议的解决方案有效!
【解决方案2】:

您可以通过将列表中的元素连接到一个字符串中来做到这一点,其中新行字符'\n\r' 作为分隔符,然后将整个字符串写入您的文件。

例如:

my_list = [a, b, c, d]

with open("twitter3.csv", "w+") as csvfile:
    to_write = "\n\r".join(my_list)
    csvfile.write(to_write)

(也可以使用'\n'

【讨论】:

    【解决方案3】:

    这是我能想到的最简单的方法:

    import csv
    
    my_list = ['a', 'b', 'c', 'd']
    
    with open('twitter3.csv', 'w', newline='') as csvfile:
        writer = csv.writer(csvfile, dialect='excel')
        writer.writerows(tuple(item) for item in my_list)
    

    请注意,我将您的列表变量的名称更改为 my_list,这样它就不会与内置的 list 类冲突。

    【讨论】:

      【解决方案4】:

      我把所有的代码放在一个地方,这样就可以复制和测试了。

      import csv
      
      # Should not use 'list' as variable
      lst =['a', 'b', 'c', 'd']
      
      # newline='' prevent additional new lines in file
      with open('twitter3.csv', 'w+', newline='') as csvfile:
        writer = csv.writer(csvfile, dialect='excel')
        for l in lst:
          writer.writerow(l)
      

      然后输出twitter3.csv

      a
      b
      c
      d
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-04-01
        • 2016-07-11
        • 2011-01-19
        • 1970-01-01
        • 1970-01-01
        • 2019-12-17
        • 1970-01-01
        • 2016-01-15
        相关资源
        最近更新 更多