我正在写一个分析在线评论的程序,基于评级,将评论存储到review_text
中,并将相应的评级存储到review_label
中,作为正面(4&5星)或负面(1,2&3星)。
尝试使用以下代码添加每次审核的审核文本和审核标签信息,但未成功。
rev = ['review_text', 'review_label']
for file in restaurant_urls:
url_rev= file
html_r_r=requests.get(url_rev).text
doc_rest=html_r_r
soup_restaurant_content= BeautifulSoup(doc_rest, 'html.parser')
star_text = soup_restaurant_content.find('img').get('alt')
if star_text in ['1-star','2-star','3-star']:
rev['review_label'].append('Negative')
elif star_text in ['4-star','5-star']:
rev['review_label'].append('Positive')
else:
print('check')
rev['review_text'].append(soup_restaurant_content.find('p','text').get_text())
我希望评论存储在列表rev
中,评论文本存储在列review_text
中,评论标签(无论是肯定的还是否定的)存储在review_label
下。它看起来会像这样
'review_text' 'review_label'
review_1 positive
review_2 negative
发布于 2019-05-03 08:51:11
我认为你误解了列表是如何工作的,因为列表没有列。在您的示例中,rev
是一个包含两个项的列表,您可以向列表中添加新项(例如,rev.append('review_user')
将导致rev
如下所示:['review_text', 'review_label', 'review_user']
)。但是,您不能将项目添加到列表中的项目中(似乎您正在尝试使用rev['review_label'].append('Negative')
来执行此操作)。
在这种特定情况下,我认为最好的解决方案是有两个单独的列表,一个用于审查文本,另一个用于审查标签,并相应地附加相应的项目:
review_text = []
review_label = []
...
review_text.append(SOMETEXT)
review_label.append(SOMELABEL)
如果你想将数据放在数据框中,你可以像这样使用pandas:
import pandas as pd
pd.DataFrame({"review_text": review_text, "review_label": review_label})
这应该会给你想要的东西。请注意,review_text
和review_label
必须具有相同的长度(在您的示例中应该是相同的长度)。我希望这能帮到你!如果您有任何问题,请留言。
https://stackoverflow.com/questions/55961871
复制相似问题