gpt4 book ai didi

python 在单独的列中给出列名和写入值作为表

转载 作者:太空宇宙 更新时间:2023-11-04 05:45:35 25 4
gpt4 key购买 nike

我的代码

from lxml import html
import requests
import csv
# encoding=utf8
import sys
reload(sys)
sys.setdefaultencoding('utf8')


# example site
page = requests.get('http://www.wintergreenfund.com/reports/top-ten/')
tree = html.fromstring(page.text)
#This will create a list of services:

tname = tree.xpath('//*[@id="colLeft"]//table//tr/td[1]/text()')
tvalue = tree.xpath('//table//tr/td[2]/text()')



print tname
print tvalue

print 'Input the csv file'
csvfile = raw_input("> ")

res = tname,tvalue


#Assuming res is a list of lists
with open(csvfile, "w") as output:
writer = csv.writer(output, lineterminator='\n')
writer.writerows(res)

我在 csv 中的输出

Reynolds American Inc. Consolidated-Tomoka Land Co. British American Tobacco

8.30% 7.50% 7.10% 6.60% 6.40% 5.90% 5.30% 4.80% 4.70% 4.10%

要求的输出与具有列名的网站相同

引用 http://www.wintergreenfund.com/reports/top-ten/

而且 unicode 也不起作用。需要这方面的帮助

我的新代码

from lxml import html
import requests
import csv

page = requests.get('http://www.wintergreenfund.com/reports/top-ten/')
tree = html.fromstring(page.text)

csvrows = []
for rows in tree.xpath('//*[@id="colLeft"]//table//tr'):
csvrows.append([rows.xpath('./td[1]/text()'),rows.xpath('./td[2]/text()')])
print csvrows
print 'Input the csv file'
csvfile = raw_input("> ")
with open(csvfile, "w") as output:
writer = csv.writer(output, lineterminator='\n')
writer.writerow(['Name','Value']) #substitute as appropriate.
writer.writerows(csvrows)

我在其中获得了 [' '] 的值(value),并且 [ ] 也是空的

最佳答案

首先,如果你想在每个相应的索引处组合两个列表,你应该使用 zip() ,目前你正在创建一个包含两个列表的元组 - res = tname ,tvalue - 然后将其按原样写入 csv。

此外,其次,您应该首先使用 xpath 获取表中的每一行,然后使用 xpath 从中获取每个必需的 td 元素。而不是像您当前使用的那样使用两个 xpath。

例子-

from lxml import html
import requests
import csv

page = requests.get('http://www.wintergreenfund.com/reports/top-ten/')
tree = html.fromstring(page.text)

csvrows = []
for rows in tree.xpath('//*[@id="colLeft"]//table//tr'):
row1text = rows.xpath('./td[1]/text()')
row2text = rows.xpath('./td[2]/text()')
if row1text and row2text:
csvrows.append([row1text[0],row2text[0]])
print(csvrows)
print('Input the csv file')
csvfile = input("> ")
with open(csvfile, "w") as output:
writer = csv.writer(output, lineterminator='\n')
writer.writerow(['Name','Value']) #substitute as appropriate.
writer.writerows(csvrows)

关于python 在单独的列中给出列名和写入值作为表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32451219/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com