[英]Writing to a CSV file and adding columns using python?
所以我以前從來沒有真正使用過 import csv ,但我已經設法從網站上抓取了一堆信息,現在想把它們放在 csv 文件中。 我遇到的問題是我所有的列表值都用逗號分隔(即 Jane Doe = J,a,n,e, ,D,o,e)。
另外,我有三個列表(一個帶有名稱,一個帶有電子郵件,一個帶有標題),我想將它們分別添加為 CSV 文件中的自己的列(因此 col1 = 名稱,col2 = 標題,col3 = 電子郵件)
關於如何執行此操作的任何想法? 謝謝。
from bs4 import BeautifulSoup
import requests
import csv
urls = ''
with open('websites.txt', 'r') as f:
for line in f.read():
urls += line
urls = list(urls.split())
name_lst = []
position_lst = []
email_lst = []
for url in urls:
print(f'CURRENTLY PARSING: {url}')
print()
res = requests.get(url)
soup = BeautifulSoup(res.text, 'html.parser')
try:
for information in soup.find_all('tr', class_='sidearm-staff-member'):
names = information.find("th", attrs={'headers': "col-fullname"}).text.strip()
positions = information.find("td", attrs={'headers': "col-staff_title"}).text.strip()
emails = information.find("td", attrs={'headers': "col-staff_email"}).script
target = emails.text.split('var firstHalf = "')[1]
fh = target.split('";')[0]
lh = target.split('var secondHalf = "')[1].split('";')[0]
emails = fh + '@' + lh
name_lst.append(names)
position_lst.append(positions)
email_lst.append(emails)
except Exception as e:
pass
with open('test.csv', 'w') as csv_file:
csv_writer = csv.writer(csv_file)
for line in name_lst:
csv_writer.writerow(line)
for line in position_lst:
csv_writer.writerow(line)
for line in email_lst:
csv_writer.writerow(line)
逐列寫入數據很容易。 您所要做的就是編寫每行包含具有相同列表索引的 3 個表的元素的行。 這是代碼:
with open('test.csv', 'w') as csv_file:
csv_writer = csv.writer(csv_file)
for name, position, email in zip(name_lst, position_lst, email_lst):
csv_writer.writerow([name, position, email])
假設 name_lst、position_lst 和 email_lst 都是正確的並且大小相同,您的問題出在代碼的最后一部分,您將其寫入 CSV 文件。
這是一種方法:
fieldnames = ['Name', 'Position', 'Email']
with open('Data_to_Csv.csv', 'w') as csvfile:
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
for i in range(len(name_lst)):
writer.writerow({'Name':name_lst[i],'Position':position_lst[i], 'Email':email_lst[i]})
如果列表的長度不相等,這當然會失敗。 您需要確保為不可用的條目添加虛擬值,以確保 3 個列表具有相同數量的值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.