python csvwriter выводит строки в отдельных строках, а не в одной строке
Прошло некоторое время, и я возвращаюсь к кодированию для исследовательского проекта, в настоящее время я делаю тренировочный сайт, чтобы увидеть, что мне нужно сделать для реального сайта.
У меня все работает так, как я хочу, но когда очищенные данные выводятся в csv, оно помещает значение в новую строку, а не в столбец рядом с той строкой, в которой оно должно было быть.
Я добавил ссылки на вывод ниже. Подскажите, что нужно изменить, а то я не могу понять.
import csv, re
import requests
from bs4 import BeautifulSoup
URL = "https://realpython.github.io/fake-jobs/"
page = requests.get(URL)
with open('testScraperEX.csv', 'w') as f:
write = csv.writer(f)
soup = BeautifulSoup(page.content, "html.parser")
write.writerow(['Title', 'Company', 'Location'])
results = soup.find(id="ResultsContainer")
job_elements = results.find_all("div", class_="card-content")
for job_element in job_elements:
title_element = job_element.find("h2", class_="title")
company_element = job_element.find("h3", class_="company")
location_element = job_element.find("p", class_="location")
Title = title_element.text.strip()
Company = company_element.text.strip()
Location = location_element.text.strip()
write.writerows([[Title],[Company],[Location]])
Это текущий выход
Вот как я хочу, чтобы вывод был
Спасибо :)
1 ответ
import csv
import requests
from bs4 import BeautifulSoup
URL = "https://realpython.github.io/fake-jobs/"
page = requests.get(URL)
with open('testScraperEX.csv', 'w', newline='') as f:
write = csv.writer(f)
soup = BeautifulSoup(page.content, "html.parser")
write.writerow(['Title', 'Company', 'Location'])
results = soup.find(id="ResultsContainer")
job_elements = results.find_all("div", class_="card-content")
for job_element in job_elements:
title_element = job_element.find("h2", class_="title")
company_element = job_element.find("h3", class_="company")
location_element = job_element.find("p", class_="location")
Title = title_element.text.strip()
Company = company_element.text.strip()
Location = location_element.text.strip()
write.writerow([Title, Company, Location])
вывод в файл csv:
Title,Company,Location
Senior Python Developer,"Payne, Roberts and Davis","Stewartbury, AA"
Energy engineer,Vasquez-Davidson,"Christopherville, AA"
Legal executive,"Jackson, Chambers and Levy","Port Ericaburgh, AA"
Fitness centre manager,Savage-Bradley,"East Seanview, AP"
Product manager,Ramirez Inc,"North Jamieview, AP"
... and many more lines ...
Эта строка в вашем коде
write.writerows([[Title],[Company],[Location]])
пишет 3 строки, потому что каждый элемент без необходимости находится внутри списка (т.е. у вас есть список из 3-х одноэлементных списков). Этот
write.writerow([Title, Company, Location])
пишет одну строку - список из 3-х элементов.
Примечание
wrte.writerows
против
write.writerow
а также
[[Title],[Company],[Location]]
против
[Title, Company, Location]