Проверьте наличие специального символа в тексте с помощью функции Python - PullRequest
0 голосов
/ 18 июня 2020

Итак, чтобы превратить текстовый файл в фрейм данных функций, я пишу специальную функцию, которая сможет это сделать. Теперь я хочу, чтобы функция могла находить вопросительные / восклицательные знаки во вводе текста, чтобы затем преобразовать его в значение в столбце df.column. Моя часть функции выглядит так:

discount = ['[%]','[€]','[$]','[£]','korting','deal','discount','reduct','remise','voucher', 
            'descuento', 'rebaja', 'скидка', 'sconto','rabat','alennus','kedvezmény',
            '할인','折扣','ディスカウント','diskon']
data = [text_input.split()]

for word in data:
    if any(char in discount for char in word):
        df['discount'] = 1
    else:
        df['discount'] = 0
for word in data:
    if any(char == '!' for char in word):
        df['exclamation'] = 1
    else:
        df['exclamation'] = 0
for word in data:
    if any(char == '?' for char in word):
        df['question'] = 1
    else:
        df['question'] = 0

Проблема в том, что если вводимый текст, например, содержит: 'Discount!' он не распознает '!' или слово "скидка", что приведет к 0 в обоих указанных столбцах. Теперь, если я удалю '!' из «скидки» он узнает их обоих.

Поэтому мне интересно, как мне нужно разделить мой text_input, чтобы убедиться, что он удаляет '!' со слов. Или есть более эффективный способ найти эти символы?

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 22 июня 2020

Удалось решить. Это мой обновленный код, который работает:

data_str = [re.split('[*?*! ]', text_input)]
data_chr = [re.findall('[^A-Za-z0-9]', text_input)]

for word in data_str:
    if any(phrase in word for phrase in discount):
        df['discount'] = 1
    else:
        df['discount'] = 0
for word in data_chr:
    if '!' in word:
        df['exclamation'] = 1
    else:
        df['exclamation'] = 0
for word in data_chr:
    if '?' in word:
        df['question'] = 1
    else:
        df['question'] = 0
0 голосов
/ 18 июня 2020

Вы можете, например, использовать регулярное выражение для разделения text_input как пробелом, так и знаком '!'. Также легко добавить дополнительные специальные символы в регулярное выражение.

import re
data = re.split('[! ]', text_input)
...