【发布时间】:2017-09-20 02:15:44
【问题描述】:
感谢阅读!我对此很陌生,但昨天我开始从网站中提取数据(商品名称及其相应的价格),并弄清楚如何使用 Python 2.7 为给定网站创建格式为:价格、商品名称的 csv 文件。现在我有一些数据集,我想比较它们并获得给定项目名称的平均价格。我现在遇到的问题是每个网站上的项目名称(可能)略有不同。例如我的第一个数据集给出了 csv 文件
4.0, Jungle Book
5.0, "Peter Pan"
4.0, Lady and the Tramp
第二个给出
5.0, Disney's Jungle Book
6.0, Disney's Up
4.0, Disney's Peter Pan
第三个给出
5.0, Up (DVD)
4.0, Peter pan (DVD)
6.0, "Lady and the Tramp" (DVD)
最后我想要一个平均输出文件,例如
4.5, Jungle Book
5.0, Lady and the Tramp
4.33, Peter Pan
5.5, Up
我的第一个问题是删除 csv 文件中的特殊字符,例如“或某些单词(例如“Disney's”、“(DVD)”)。我找到了有关从 csv 文件中删除行和列的信息,但我很难时间在这些元素中进行编辑。像这样删除“(DVD)”类型的作品,但使我的 csv 文件更加混乱,包含更多“和 [ 字符..
import csv
import string
input_file = open('DesktopData.csv', 'r')
output_file = open('fixformat.csv', 'w')
data = csv.reader(input_file)
writer = csv.writer(output_file,quoting=csv.QUOTE_ALL)# dialect='excel')
specials = '(DVD)'
for line in data:
line = str(line)
new_line = str.replace(line,specials,'')
writer.writerow(new_line.split(','))
input_file.close()
output_file.close()
一旦可行,我想采用给定标题的平均价格。我有一些想法,但缺乏真正弄清楚的python语法
Read all titles and put in mainlist;
if title already exsists, ignore/dont make new row with title
Read all files and compare with mainlist;
if title is found, put corresponding price in new column behind title
在我的脑海中,这必须输出
Jungle Book, 4.0, 5.0
Lady and the Tramp, 4.0, 6.0
Peter Pan, 5.0, 4.0, 4.0
Up, 6.0, 5.0
一旦我得到这个,我很确定我可以把它变成普通的 csv 文件。任何建议都非常感谢!
【问题讨论】:
-
您可能想看看导入 pandas 并尝试一下。从查看 pd.read_csv() 方法开始。
标签: python csv web-scraping