Я пытаюсь получить предложение от пользователя и предварительно обработать его, чтобы удалить специальные символы, используя регулярное выражение в бэкэнде, а затем мне нужно отправить обратно положение конкретного слова, чтобы выделить это слово для пользователя, но столкнуться с конфликтом как позиция оригинала и предварительно обработанное предложение различаются.
Есть ли лучший способ решить вышеуказанную проблему, используя Python?
Например:
import re
def text_preprocessing(input_text, string_to_find):
print("Original text is:", input_data)
cleaned_text = [re.sub('[^a-zA-Z0-9#.+]', " ", input_data)]
cleaned_text = [re.sub(' +', " ", text) for text in cleaned_text]
for cleaned_text in cleaned_text: # just to convert list to string
print("preprocessed text is:", cleaned_text)
position = cleaned_text.find(string_to_find)
position = [position, position + len(string_to_find)]
return position
input_text = 'Hi! Hello'
string_to_find = 'Hello'
position = text_preprocessing(input_text, string_to_find)
print(position)
Фактический результат
Original text is: Hi! Hello
preprocessed text is: Hi Hello
[3, 8]
оригинальное предложение = «Привет! Привет '
Предварительно обработанное предложение =' Привет Привет ' (только что удаленный символ'! ')
В случае, если мне нужно выделить слово "Привет", я просто возвращаю позиция от бэкэнда как (3,8) , но фактическая позиция в пользовательском интерфейсе равна (4, 9)
Ожидаемый результат
Original text is: Hi! Hello
preprocessed text is: Hi Hello
[4, 9]
ОС: windows 10, Python 3.7, используется регулярное выражение для предварительной обработки