python 将列表 csv 写为列
python writing listing csv as columns
我想将列表作为列写入 csv。
每个列表都有超过 100 个输出。我在下面给出 csv 的例子
谢谢
csv output example:
coloumn 1 coloumn 2 coloumn 3 coloumn 4 coloumn 5
listing 1_output1 listing 2_output1 ... ... ...
listing 1_output2 listing 2_output2 ... ... ...
listing 1_output3 listing 2_output3 ... ... ...
... ... ... ... ...
import bs4 as bs
import urllib.request
import csv
sauce = urllib.request.urlopen('http...').read()
soup = bs.BeautifulSoup(sauce, 'lxml')
for listing in soup.find_all('div', class_='bigletter1'):
for listing2 in soup.find_all('td', class_='bigletter2'):
for listing3 in soup.find_all('td', class_='bigletter3'):
for listing4 in soup.find_all('td', class_='bigletter4'):
for listing5 in soup.find_all('td', class_='bigletter5'):
感谢您的回答
但我也有非数字 class 也喜欢 class_='models'
我如何写入 csv?
使用 range
遍历每个列表。附加到 list
.
data = []
for i in range(1, 6):
data.append([])
for listing in soup.find_all('div', class_='bigletter{}'.format(i)):
data[-1].append(listing.text)
现在,data
看起来有点像这样 -
[listing1,
listing2,
...
]
每个 列 作为一个子列表。我们需要的是转置,以便轻松地将数据写入 CSV。这可以用逆 zip
来完成。使用 csv
模块并将每一行写入 CSV 文件。
import csv
with open(file, 'w') as f:
w = csv.writer(f)
for row in zip(*data):
w.writerow(row)
您实际上可以通过 "wildcard" 定位器在一个循环中匹配所有需要的元素:
for listing in soup.select('[class^=bigletter]'):
其中 ^=
表示 "starts with"。
我想将列表作为列写入 csv。 每个列表都有超过 100 个输出。我在下面给出 csv 的例子 谢谢
csv output example:
coloumn 1 coloumn 2 coloumn 3 coloumn 4 coloumn 5
listing 1_output1 listing 2_output1 ... ... ...
listing 1_output2 listing 2_output2 ... ... ...
listing 1_output3 listing 2_output3 ... ... ...
... ... ... ... ...
import bs4 as bs
import urllib.request
import csv
sauce = urllib.request.urlopen('http...').read()
soup = bs.BeautifulSoup(sauce, 'lxml')
for listing in soup.find_all('div', class_='bigletter1'):
for listing2 in soup.find_all('td', class_='bigletter2'):
for listing3 in soup.find_all('td', class_='bigletter3'):
for listing4 in soup.find_all('td', class_='bigletter4'):
for listing5 in soup.find_all('td', class_='bigletter5'):
感谢您的回答 但我也有非数字 class 也喜欢 class_='models' 我如何写入 csv?
使用 range
遍历每个列表。附加到 list
.
data = []
for i in range(1, 6):
data.append([])
for listing in soup.find_all('div', class_='bigletter{}'.format(i)):
data[-1].append(listing.text)
现在,data
看起来有点像这样 -
[listing1,
listing2,
...
]
每个 列 作为一个子列表。我们需要的是转置,以便轻松地将数据写入 CSV。这可以用逆 zip
来完成。使用 csv
模块并将每一行写入 CSV 文件。
import csv
with open(file, 'w') as f:
w = csv.writer(f)
for row in zip(*data):
w.writerow(row)
您实际上可以通过 "wildcard" 定位器在一个循环中匹配所有需要的元素:
for listing in soup.select('[class^=bigletter]'):
其中 ^=
表示 "starts with"。