Как добавить текст отзыва и рейтинг отзывов в список? - PullRequest
0 голосов
/ 03 мая 2019

Я пишу программу, которая анализирует онлайн-обзоры и на основе рейтингов сохраняет отзыв в 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

1 Ответ

0 голосов
/ 03 мая 2019

Я думаю, вы неправильно понимаете, как работают списки, потому что списки не имеют столбцов.В вашем случае 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 должны иметь одинаковую длину (которая должна быть в вашем случае).Надеюсь, это поможет!Прокомментируйте, если у вас есть какие-либо вопросы.

...