【问题标题】:Write a CSV without delimiters in Python在 Python 中编写不带分隔符的 CSV
【发布时间】:2016-10-03 18:34:05
【问题描述】:

我有问题...

我有许多网站的列表,例如这个例子。

[u'www.rosenzweigco.com', u'www.investopedia.com', u'www.bk.mufg.jp']

但是,当我想要一个 CSV 文件时,我得到了这个:

w,w,w,.,r,o,s,e,n,z,w,e,i,g,c,o,.,c,o,m,
w,w,w,.,i,n,v,e,s,t,o,p,e,d,i,a,.,c,o,m,

我的代码如下(我不需要空格而不是逗号):

def writeCsvFile(fname,data):
mycsv = csv.writer(open(fname, 'wb'), delimiter=',',quoting=csv.QUOTE_NONE)
for row in data:
    mycsv.writerow(row)

谢!!

【问题讨论】:

    标签: python list csv delimiter


    【解决方案1】:

    .writerow 接受一个可迭代对象并将可迭代对象中的每个项目作为 csv 中的一列写入。看起来您将单个字符串作为row 传递。在这种情况下,您需要:

    for website in data:
        mycsv.writerow([website])
    

    但是,我猜这不是您想要的相当,因为如果您只想每行写一个项目,则不需要csv。问题可能在于您如何将data 指定给writeCsvFile 函数。也许您想要以下内容:

    data = [[u'www.rosenzweigco.com', u'www.investopedia.com', u'www.bk.mufg.jp']]
    

    请注意,现在data 是一个列表列表。因此,当您迭代它 (for row in data) 时,您实际上会得到一行 (list) 而不仅仅是一个字符串。

    【讨论】:

      【解决方案2】:

      让我想到的第一个想法与 mgilson 的回答相同。 此外,如果您使用的是 python 3 ,则需要使用 'w' 参数打开文件,而不像 python 2.7 那样使用二进制模式

      Python 3.5

      with open('eggs.csv', 'w', newline='') as csvfile:
          spamwriter = csv.writer(csvfile, delimiter=' ',
                                  quotechar='|', quoting=csv.QUOTE_MINIMAL)
      

      Python 2.7

      import csv
      with open('eggs.csv', 'wb') as csvfile:
          spamwriter = csv.writer(csvfile, delimiter=' ',
                                  quotechar='|', quoting=csv.QUOTE_MINIMAL)
          spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
          spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-03-12
        • 1970-01-01
        • 2021-12-17
        • 1970-01-01
        • 2022-06-15
        • 2020-10-14
        • 1970-01-01
        相关资源
        最近更新 更多