2015-07-21 2 views
1

Я использую 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, что я хочу?

+0

Для записи файлы безполезны. – That1Guy

+0

Спасибо. Я буду помнить об этом :) – BoobaGump

+0

Если ваша единственная проблема - это пробел, вы рассмотрели использование [str.strip()] (https://docs.python.org/2/library/string.html#string.strip), чтобы удалить его? – Moshe

ответ

0
csv_writer = csv.writer(outfile, delimiter=';') 

Трансформация комы в полуколонии. Читается excel-EU.

Смежные вопросы