【问题标题】:How do I append reviews text and reviews rating to a list如何将评论文本和评论评分附加到列表中
【发布时间】:2019-09-21 12:45:50
【问题描述】:

我正在编写一个程序,它分析在线评论并根据评分将评论存储到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

【问题讨论】:

    标签: python nlp text-mining


    【解决方案1】:

    我认为您误解了列表的工作原理,因为列表没有列。在您的情况下,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_textreview_label 必须具有相同的长度(在您的情况下它们应该具有相同的长度)。 我希望这有帮助!如果您有任何问题,请发表评论。

    【讨论】:

    • 非常感谢您提供如此详细的解释。我确实进行了您建议的更改,并创建了列表 review_text = [] 和 review_label = [],现在它工作得很好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-31
    • 2021-12-30
    • 2020-07-07
    • 1970-01-01
    • 2014-07-06
    • 1970-01-01
    相关资源
    最近更新 更多