在Python中编写没有分隔符的CSV

时间:2016-06-03 15:49:43

标签: python list csv delimiter

我遇到了问题...

我有一些网站列表,例如这个例子。

[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)

韩国社交协会!!

2 个答案:

答案 0 :(得分:0)

.writerow采用iterable并将iterable中的每个项目作为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),而不只是一个字符串。

答案 1 :(得分:0)

第一个让我印象深刻的想法与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'])