Python .csv编写器

c24*_*24b 2 python csv writer

.writer()在循环中使用了一个方法,如Python文档中所示.我想u逐行写出变量的结果(或逐行更好).

实际上它在解释器中工作得很好,但模块writerow()似乎不起作用.为什么?

from urlparse import urlparse
import csv
import re

ifile =open(ipath,'r')
ofile = open(opath, 'wb')
writer = csv.writer(ofile, dialect='excel')

url =[urlparse(u).netloc for u in file (ipath, "r+b")]
sitesource =  set([re.sub("www.", "", e) for e in url])
liste = [re.split(",'", e) for e in liste]


ofile
for row in file (ifile) :
    for u in sitesource:
        print ("Creation de:", u)
        writer.writerow(u) 

ofile.close()
Run Code Online (Sandbox Code Playgroud)

我正在使用Python 2.7.

Ste*_*ski 5

猜猜你的意思是,我会按如下方式重写你的代码:

from urlparse import urlparse
import csv
import re

ifile =open(ipath,'r')
ofile = open(opath, 'wb')
writer = csv.writer(ofile, dialect='excel')

url =[urlparse(u).netloc for u in ifile]
sitesource =  set([re.sub("www.", "", e) for e in url])

for u in sitesource:
    print ("Creation de:", u)
    writer.writerow([u]) 

ofile.close()
ifile.close()
Run Code Online (Sandbox Code Playgroud)

我删除了,liste因为它没有使用.for row in file (ifile):当你创建时已经迭代了它的内容,我摆脱了url.

我变了

url =[urlparse(u).netloc for u in file (ipath, "r+b")]
Run Code Online (Sandbox Code Playgroud)

url =[urlparse(u).netloc for u in ifile]
Run Code Online (Sandbox Code Playgroud)

因为你已经打开了文件.如果你正在阅读字符串,我假设你不想要二进制模式.

我改变writerow(u)了写一个序列:writerow([u]).这会在u每行中添加一行,这意味着您的csv文件中不会包含任何逗号.如果您希望将所有结果放在一行中,请将此最终循环替换为此参数writer.writerow(sitesource).