2017-02-15 19 views
2

Я новичок в Python, и я пытаюсь извлечь данные из Интернета и отображать его в таблице:writerow в задачах файла CSV

# import libraries 
import urllib2 
from bs4 import BeautifulSoup 
import csv 
from datetime import datetime 

quote_page = 'http://www.bloomberg.com/quote/SPX:IND' 
page = urllib2.urlopen(quote_page) 
soup = BeautifulSoup(page, 'html.parser') 
name_box = soup.find('h1', attrs={'class': 'name'}) 
name = name_box.text.strip() 
print name 
price_box = soup.find('div', attrs={'class':'price'}) 
price = price_box.text 
print price 

with open('index.csv', 'a') as csv_file: 
    writer = csv.writer(csv_file) 
    writer.writerow([name, price, datetime.now()]) 

это очень простой код, который извлечение данных от bloomberg и отобразить его в CSV-файле. Должно отображаться имя в столбце, цена в другом и дата в третьем. Но на самом деле он копирует все эти данные в первую строку: Result of the index.csv file.

Я что-то пропустил с кодом?

Благодарим за помощь!

+0

ваш CSV имеет три колонки, что именно это.. проблема? – e4c5

+0

Похоже, что файл CSV идеален (то есть, хорошо сделано с кодом Python!). Однако проблема заключается в том, что вы импортируете его в свою программу для работы с электронными таблицами. вы это делаете? – jas

+0

Проблема заключалась в том, что Excel не разрешал колонку для каждого файла, потому что я не использовал мастер импорта текста. Теперь моя проблема описана Джозефом Байутером. – VI55

ответ

0

Wikipedia:

В вычислениях, разделенные запятыми значение (CSV файл) хранит табличные данные (номер и текст) в виде простого текста. Каждая строка файла представляет собой запись данных. Каждая запись состоит из одного или нескольких полей, разделенных запятыми. Использование запятой в качестве разделителя полей является источником имени для этого формата файла.

Проблема не связана с вашим кодом Python! Ваш скрипт фактически пишет текстовый файл с полями, разделенными запятыми. Это ваш просмотрщик файлов csv, который не принимает запятые в качестве разделителей. Вы должны проверить настройки своего средства просмотра файлов csv.

+0

Я использовал Excel, и я решил свою проблему с вашей драгоценной помощью! Для тех, кто читает это в будущем: Перейдите в раздел «Данные» и выберите текст в столбцах под инструментами данных, затем выберите разделитель и нажмите «Далее». Затем выберите запятую в качестве разделителя и нажмите «Готово». – VI55

0

Похоже, что когда вы импортируете свой CSV в Excel, это не интерпретируется правильно. Когда я импортировал его в Excel, я заметил, что запятая в «2,337,58» испортила данные CSV, вставив «337,58» в свой собственный столбец. Когда вы импортируете данные в excel, вы должны получить всплывающее окно, . спрошу, как представляются данные Вы должны выбрать разделители опции, а затем выберите разделитель:. запятая Наконец, нажмите кнопку Готово

Importing CSV

enter image description here

+0

Благодарим вас за подробный ответ. Есть ли способ исправить проблему «2,337,58»? – VI55

+1

@ VI55: На шаге 2 мастера импорта у вас есть набор спецификаторов текста для двойных кавычек ('' ')? Причина, по которой у Джозефа Байутера возникают проблемы со вторым столбцом, заключается в том, что столбец начинается с пробела, а не из цитаты. Индекс S & P 500, «2,337,58», 2017-02-15 14: 02: 55.217830' должен быть индексом S & P 500, «2,337,58», 2017-02-15 14: 02: 55.217830. Когда котировка не является первым символом в поле, она не рассматривается как поле с кавычками. (Quoting позволяет иметь разделители в ваших данных, которые не рассматриваются как разделители.) –

+1

@ VI55: Из изображения, опубликованного вами в результате импорта вашего Excel, я думаю, что, скорее всего, у вас нет лишнего места в данных потому что это не образ. Скорее всего, у вас нет набора текста для двойных кавычек. –