如何将数组值导出到CSV中的不同行?

时间:2019-04-29 21:36:09

标签: python

我正尝试从Google导出基于特定关键字的排名和URL,并将其导出到csv。除了我的CSV文件的编写方式之外,其他所有内容都正常运行。

我的问题是,当我将数组导出到CSV时,所有内容都位于一行中。我希望它位于2个不同的列和多个行上。

我尝试在'\n'变量中添加rank,当我打印结果时,它在终端中使行中断,但是在csv中,它将\ n附加为新值。

我尝试将newline='\n'添加到open(),但它确实在终端中中断了,但在csv导出中却没有中断。

d=[]
for i in links:
    counter = counter + 1
    if sitename in str(i):
        url = i.find_all('a', href=True)
        position = "position: %d" % (counter)
        rank = "url: %s" % (url[0]['href'])
        d.append(position)
        d.append(rank)
        print(position, rank)


filename = "rank_export.csv"
f = open(filename,"w")
headers = "URL, Rank\n" 
f.write(headers)
f.write(str(d))
f.close()

1 个答案:

答案 0 :(得分:1)

据我了解,您将位置和排名都附加在同一列表中。然后,您将该列表写在csv中,因此是单行输出。您还尝试使用逗号分隔的字符串而不是列名列表来传递csv标头。

以下应为您解决问题:

import csv

with open('rank_export.csv', 'w') as f:
    writer = csv.writer(f)
    writer.writerow(['URL', 'Rank'])
    writer.writerows(zip(d[0::2], d[1::2]))