我正尝试从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()
答案 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]))