我遇到了问题...
我有一些网站列表,例如这个例子。
[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)
韩国社交协会!!
答案 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'])