编写CSV文件问题

时间:2017-02-15 13:20:16

标签: python csv beautifulsoup row

我是Python的初学者,我正在尝试从网络中提取数据并将其显示在表格中:

# 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

我错过了我的代码吗?

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

Wikipedia:

  

在计算中,逗号分隔值(CSV)文件以纯文本形式存储表格数据(数字和文本)。该文件的每一行都是一个数据记录。每条记录由一个或多个字段组成,以逗号分隔。将逗号用作字段分隔符是此文件格式的名称的来源。

问题与您的Python代码无关!您的脚本实际上使用逗号分隔的字段编写纯文本文件。它是您的csv文件查看器,它不将逗号作为分隔符。您应该检查csv文件查看器的首选项。

答案 1 :(得分:0)

看起来,当您将CSV导入Excel时,它不能被正确解释。当我将它导入Excel时,我注意到了#34; 2,337.58"中的逗号。正在弄乱CSV数据,把337.58"进入它自己的专栏。将数据导入excel时,您应该会看到一个弹出窗口,询问如何表示数据。您应该选择分隔选项,然后选择分隔符:逗号。最后,点击完成。

Importing CSV

enter image description here