убрать скобку и ее содержимое в python - PullRequest
1 голос
/ 07 марта 2020

Я ввел классификацию анализа эмоций, используя метод lstm. Я уже тренировал свою модель и сохранил ее. Я загрузил модель поезда, и я делаю классификацию, где я сохраняю ее в данных. Мне нужно убрать скобки вместе с их содержанием, я покажу вам ниже.

вот мои коды:

 hotelname = []
sentimentanalysis = []

for item in selection1:
    name = item['name']
    hotelname.append(name)
    print (name)

вывод следующий:

Mystik Lifestyle (Save 34%)
Chalets Chamarel (Adults Only)
Andrea Lodge (Save 18%)
Hibiscus Beach Resort & Spa (Save 18%)
Lagoon Attitude (Adults Only)
Ocean V Hotel (Adults Only)

но я хочу, чтобы мой вывод был таким:

Mystik Lifestyle 
Chalets Chamarel 
Andrea Lodge 
Hibiscus Beach Resort & Spa 
Lagoon Attitude 
Ocean V Hotel 

Может кто-нибудь, пожалуйста, скажите мне, что мне нужно добавить в мои коды, пожалуйста, ребята.

Ответы [ 4 ]

0 голосов
/ 07 марта 2020

Вы попробуете это ниже код:

hotelname = []
sentimentanalysis = []

for item in selection1:
    name = item['name'].split('(')[0].strip()
    hotelname.append(name)
    print (name)
0 голосов
/ 07 марта 2020
import re
def remove_bracket(text):
    x = re.sub("[\(\[].*?[\)\]]", "", text)[:-1]
    return x

cleaned_text = remove_bracket(name)
hotelname.append(cleaned_text)

редактировать:

li = ['Mystik Lifestyle (Save 34%)',
'Chalets Chamarel (Adults Only)',
'Andrea Lodge (Save 18%)',
'Hibiscus Beach Resort & Spa (Save 18%)',
'Lagoon Attitude (Adults Only)',
'Ocean V Hotel (Adults Only)']

for i in li:
    cleaned_text = remove_bracket(i)
    print(cleaned_text)

вывод:

Mystik Lifestyle
Chalets Chamarel
Andrea Lodge
Hibiscus Beach Resort & Spa
Lagoon Attitude
Ocean V Hotel
0 голосов
/ 07 марта 2020

Вы можете сделать это с помощью простого метода String, называемого .split () .
Посмотрите на код ниже:

elements = ['Mystik Lifestyle (Save 34%)',
'Chalets Chamarel (Adults Only)',
'Andrea Lodge (Save 18%)',
'Hibiscus Beach Resort & Spa (Save 18%)',
'Lagoon Attitude (Adults Only)',
'Ocean V Hotel (Adults Only)']

for element in elements:
    without_text_after_unwanted_character = element.split('(')[0] 
    # This will get everything before the '(' as we splitted
    print(without_text_after_unwanted_character)

# If you want to create a new list the new values, you can do:
clean_list = [x.split('(')[0] for x in elements]

for clean_text in clean_list:
    print(clean_text)
0 голосов
/ 07 марта 2020

Вы можете использовать модуль re следующим образом:

import re
def clean(n):
    return re.sub(r'\s\(.*\)','',n)

затем:

name = clean(item['name'])

вместо

name = item['name']

Обратите внимание, что я использую так называемая raw-строка в качестве первого аргумента re.sub, а также удаляет пробелы (\s) перед скобками и их содержимым. Обратите внимание, что ( и ) необходимо экранировать, поскольку они имеют особое значение в шаблонах (отсюда и ведущие обратные слеши).

...