Я использую Beautiful Soup, чтобы захватить специальные таблицы из нескольких страниц, которые URL находятся в url.csv
Почему мой CSV не выглядит так, как мне нужно?
Код:
def parse_csv(content, delimiter = ';'):
csv_data = []
for line in content.split('\n'):
csv_data.append([x.strip() for x in line.split(delimiter)]) # strips spaces also
return csv_data
list_url=parse_csv(open('url.csv','rU').read())
f = csv.writer(open("raw.csv", "w",encoding='utf8',newline=''))
# Write column headers as the first line
for i in range (0,len(list_url)):
url=str(list_url[i][0]) ## read URL from an array coming from an Url-CSV
page=urllib.request.urlopen(url)
soup = BeautifulSoup(page.read(),"html.parser")
restricted_webpage= soup.find("div", {"id":"ingredients"})
readable_restricted=str(restricted_webpage)
soup2=BeautifulSoup(readable_restricted,"html.parser")
links = soup2.find_all('td')
print(len(links))
for link in links:
i = link.find_next_sibling('td')
if getattr(i, 'name', None):
a, i = link.string, i.string
f.writerow([a, i])
Мой CSV выглядит следующим образом:
"
Cendres brutes (%)
","
7.4
" "
Cellulose brute (%)
","
1.6
" "
Fibres alimentaires (%)
","
6.6
" "
Matière grasse (%)
","
16.0
В то время как я хотел это должно выглядеть так:
Cendres brutes(%);7.4
Cellulose brute (%);1.6
Fibres Alimentaires(%);6.6
Mati̬re grasse (%);16.0
Мне нужно, чтобы это выглядело так по двум причинам: 1. Отлично выглядит, когда я открываю такой CSV в excel. 2. Я могу использовать свой синтаксический анализатор CSV (тот, который определяют в первой строке parse_csv
) и работать с массивом, созданным из моего CSV, например, если он был ячейкой на excel. клеток [х] [у]. Это очень удобно.
Как я могу это достичь? Скажем, наличие такого CSV, что я хочу?
Для записи файлы безполезны. – That1Guy
Спасибо. Я буду помнить об этом :) – BoobaGump
Если ваша единственная проблема - это пробел, вы рассмотрели использование [str.strip()] (https://docs.python.org/2/library/string.html#string.strip), чтобы удалить его? – Moshe