2017-02-15 7 views
2

私はPythonで初心者だ、と私は、Webからデータを抽出し、テーブルに表示しようとしている:これはデータを抽出し、非常に基本的なコードがあるのwriterowは

# 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()]) 

ブルームバーグからcsvファイルに表示します。 名前を列に表示し、価格を他の価格に、日付を3番目の価格に表示する必要があります。 しかし実際には、最初の行のすべてのデータをコピーします:Result of the index.csv file

私のコードで何か不足していますか?

ありがとうございました!コンピューティング

+0

あなたのcsvファイルは3つの列を持っている何が正確です。問題はありますか? – e4c5

+0

CSVファイルが完璧であるようです(つまり、Pythonコードでうまくいきます!)。しかし、問題はあなたのスプレッドシートプログラムにインポートしています。あなたはそれをしていますか? – jas

+0

問題は、テキストインポートウィザードを使用しなかったため、Excelが各ファイルに列を許可しなかったことです。 私の問題はJoseph Bywaterが記述したものです。 – VI55

答えて

0

Wikipedia:

、平文のカンマ区切り値(CSV)ファイルを格納する表データ(数字およびテキスト)。ファイルの各行はデータレコードです。各レコードはカンマで区切られた1つ以上のフィールドで構成されます。フィールドセパレータとしてコンマを使用すると、このファイル形式の名前のソースになります。

問題はあなたの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では、テキスト修飾子を二重引用符( '" ')に設定していますか? Joseph Bywaterが第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」とする。引用符がフィールド内の最初の文字でないときは、引用符で囲まれたフィールドとして扱われません。 (引用では区切り文字として扱われないデリミタをデータ内に持つことができます) –

+1

@ VI55:Excelインポートの結果を投稿した画像から、データに余分なスペースがない可能性が高いと思いますそれはイメージにないからです。あなたが二重引用符で囲まれたテキスト修飾子を持っていない可能性が高くなります。 –

関連する問題