python csv按行而不是列列出

时间:2013-07-10 07:05:37

标签: python csv rows

我有一个脚本,可以将最终的重定向网址保存到CSV文件中。

脚本将代码写入1列,例如A1,然后是A3,然后是A5

如何按行写代码,例如A1 B1 C1 D1

请看this我想要的红色,最终结果的蓝色,我不希望它是那样的(1列中的列表,A1 A3 A5和每个单元格之间都有空格!!)

这是我的最终剧本

import urllib2
import csv
import sys

url = 'http://www.test.com'

u = urllib2.urlopen(url)
localfile = open('C:\\test\\file.csv', 'a')
writer = csv.writer(localfile)
writer.writerow([u.geturl()])
localfile.close()

2 个答案:

答案 0 :(得分:1)

如果只有一行,为什么不自己创建CSV?

import urllib2

url = 'http://www.google.com'

u = urllib2.urlopen(url)
localFile = open('C:\\file.csv', 'ab')
localFile.write(u.geturl() + ",")

localFile.close()

答案 1 :(得分:0)

writer.writerow()表示将列表写入一行。因此,每次调用它都会有一个新行。所以结果是你不想要的,它们在一列中。如果你想把它们写成一行。您最好获得一个列表,然后将所需的所有数据放在其中,例如l = [111, 222, 333, 444]。然后只调用writer.writerow(l)一次。你可以得到你想要的东西。

编辑
如果脚本像守护进程一样运行,则一直运行并等待输入:

#10 is the number you want in a row, you can assign it yourself.
L = []
urls = ['http://www.google.com', 'http://facebookcom', 'http://twitter.com']
for url in urls:
    u = urllib2.urlopen(url)
    L.append(u.geturl())

localfile = open('C:\\test\\file.csv', 'w')
writer = csv.writer(localfile)
writer.writerow(L)
localfile.close()

如果脚本像回调一样,每次只获得一个url。我很抱歉,我没有在csv模块中看到任何修改文件的API。

至于我,我不认为在这种情况下你需要一个csv文件。 csv中的一行通常表示整个数据结构,而不是列表。如果要轻松导入文件,可以使用普通文件,每个URL一行或按空格分割。下次需要时,您只需使用str方法(例如split)对其进行处理,然后将其快速转回列表。

>>> 'http://www.google.com\nhttp://www.facebook.com\nhttp://www.twitter.com'.split('\n')
['http://www.google.com', 'http://www.facebook.com', 'http://www.twitter.com']
>>>