Python 无法使用dictwriter在csv文件中写入数据
我用python编写了一个脚本,用api从网页上刮取一些Python 无法使用dictwriter在csv文件中写入数据,python,json,python-3.x,csv,web-scraping,Python,Json,Python 3.x,Csv,Web Scraping,我用python编写了一个脚本,用api从网页上刮取一些项目名称,估计时间,以及评论,审查者和评级连接到每个项目名称,并将它们写入csv文件。问题是我下面的脚本可以相应地解析数据,但我不能将它们写入csv文件 但是,当我尝试将它们写入csv文件时,会出现以下错误: Traceback (most recent call last): File "C:\Users\WCS\AppData\Local\Programs\Python\Python36-32\demo000000.py", lin
项目名称
,估计时间
,以及评论
,审查者
和评级
连接到每个项目名称
,并将它们写入csv文件。问题是我下面的脚本可以相应地解析数据,但我不能将它们写入csv文件
但是,当我尝试将它们写入csv文件时,会出现以下错误:
Traceback (most recent call last):
File "C:\Users\WCS\AppData\Local\Programs\Python\Python36-32\demo000000.py", line 71, in <module>
w.writerow(reviews)
File "C:\Users\WCS\AppData\Local\Programs\Python\Python36-32\lib\csv.py", line 155, in writerow
return self.writer.writerow(self._dict_to_list(rowdict))
File "C:\Users\WCS\AppData\Local\Programs\Python\Python36-32\lib\csv.py", line 151, in _dict_to_list
+ ", ".join([repr(x) for x in wrong_fields]))
ValueError: dict contains fields not in fieldnames: 'reviews'
我们将非常感谢您对将刮取的数据写入csv文件的任何帮助。谢谢。试试换衣服
w = csv.DictWriter(f,['name','eta','messg','reviewer','rating'])
到
上述错误表明,在写入CSV文件时,映射值不匹配。
根据需要对代码进行更改
w = csv.DictWriter(f,['name', 'eta', 'reviews', 'reviewer', 'rating'])
...
for texualreviews in req.json()['yelpReviews']:
reviews_data = {'reviews':texualreviews['message'],'reviewer':texualreviews['reviewerName'],'rating':texualreviews['rating']}
reviews['reviews'].append(reviews_data)
w.writerow(reviews)
缔约国指出:
如果传递给writerow()
方法的字典包含一个键,则
在FieldName中找到,可选的extrasaction参数指示
采取什么行动。如果设置为'raise'
,则默认值为a
ValueError
被引发
对writerow()
的调用将字典reviews
作为参数传递,其键为name
、eta
和reviews
。因此,with
语句右下方的行应该是:
w=csv.DictWriter(f,['name','eta','reviews']
其他领域是不必要的;如果添加它们,它们将被填充为空。@gboffi感谢您的编辑。我想用粗体突出显示答案的代码部分中不可能出现的更改。抱歉,使用标记在代码中不可能出现粗体部分。也许可以直接使用HTML来做你想做的事情——我的建议是“没有必要”。
w = csv.DictWriter(f,['name','eta', 'reviews','reviewer','rating'])
ValueError: dict contains fields not in fieldnames: 'reviews'
w = csv.DictWriter(f,['name', 'eta', 'reviews', 'reviewer', 'rating'])
...
for texualreviews in req.json()['yelpReviews']:
reviews_data = {'reviews':texualreviews['message'],'reviewer':texualreviews['reviewerName'],'rating':texualreviews['rating']}
reviews['reviews'].append(reviews_data)
w.writerow(reviews)