我正在编写一个程序,该程序可以分析在线评论并基于评分,将评论分别存储为review_text
和相应的评级为{4和5星)或否定({1} ,2和3星)。
尝试使用以下代码添加每个评论的评论文本和评论标签信息,但没有成功。
review_label
我希望将评论存储在列表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
答案 0 :(得分:0)
我认为您会误解列表的工作原理,因为列表没有列。在您的情况下,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)
如果您随后希望将数据保存在数据框中,则可以像这样使用熊猫:
import pandas as pd
pd.DataFrame({"review_text": review_text, "review_label": review_label})
这应该给您您想要的。请注意,review_text
和review_label
的长度必须相同(在您的情况下,它们应该相同)。
我希望这有帮助!如有任何疑问,请发表评论。