Список Python в файл csv

#python #python-3.x #list #csv

#python #python-3.x #Список #csv

Вопрос:

Я создал скребок для получения информации с веб-сайта с помощью цикла for и создал список с каждым циклом. Результат — это то, что я ожидал, но мне трудно полностью поместить эту информацию в файл csv. Я намерен создать 4 строки, в которых будут совпадать соответствующие URL, местоположение и т. Д., Но, возможно, способ, которым я устанавливаю свои циклы, усложняет задачу?

Я думал, что следующий синтаксис поможет, но нет. Он печатает только все URL-адреса в одной строке. Я должен был распечатать всю информацию, но они все еще были в одной строке.

 with open('trademe.csv', 'w', newline='') as f:
    writer = csv.writer(f)
    writer.writerow(['URL', 'Price', 'Location', 'Flatmates'])
    writer.writerow([link, price, loc, mates])
 

Кстати, это код до сих пор;

 trademe = urlopen(url)
trademe_html = soup(trademe.read(), "html.parser")
trademe.close()

link=[]
for i in trademe_html.find_all('div', attrs={'class' : 'dotted'}):
    link.append('URL: www.trademe.co.nz' i.a['href'])
    print('URL: www.trademe.co.nz' i.a['href'])

price=[]
for i in trademe_html.find_all('div', attrs={'class' : 'flatmates-list-view-card-price'}):
    price.append('Price and availability: '   i.text.strip())
    print('Price and availability: '   i.text)

loc=[]
for i in trademe_html.find_all('div', attrs={'class' : 'flatmates-card-subtitle'}):
    loc.append('Location: '   i.text)
    print('Location: '   i.text)
    
mates=[]
for i in trademe_html.find_all('div', attrs={'class' : 'flatmates-card-existing-flatmates'}):
    mates.append(i.text.strip())
    print(i.text)
 

Комментарии:

1. Добро пожаловать в SO. Вы установили для новой строки значение '' . Разве это не должно быть n ?

2. привет, @ewong, спасибо! Я забыл упомянуть, что я пытался установить новую строку =’n’, и это не сработало. Я попытался добавить n в конце моего цикла, и это сработает, если я напечатаю его внутри своей IDE. Однако он каким-то образом не работает с файлом csv.

Ответ №1:

  • Вставьте свои данные в pandas DataFrame
  • Используйте to_csv функцию в pandas

Pandas позволяет очень легко экспортировать фрейм данных в csv с заголовками

Комментарии:

1. привет @topgunner, спасибо, что ответили на мой вопрос! Я использовал pandas dataframe, но я все еще не могу получить желаемый результат. Следующий код записывает всю информацию в соответствующий заголовок, но в целом в одну и ту же строку fields = [‘URL’, ‘Price’, ‘Location’, ‘Flatmates’] rows = [link, price, loc, mates], с открытым (‘agalu.csv’, ‘w’, новая строка=’n’) как csv_file: csvwriter = csv.writer(csv_file) csvwriter.writerow(поля) csvwriter.writerows(строки)