如何使用python返回预处理句子中单词的原始位置?

问题描述 投票:2回答:1

我正在尝试从用户那里得到一个句子,并在后端使用正则表达式对其进行预处理以删除特殊字符,然后我需要将特定单词的位置发回以向用户突出显示该单词,但是该位置面临冲突的原词和预处理后的句子不同。

有没有使用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]

原句='嗨!你好'

预处理句子='嗨,你好'(刚刚删除了'!'符号)

如果我需要突出显示单词“ Hello”,我只是从后端以(3,8)返回该位置,但是UI中的实际位置是(4,9)] >>

预期输出

Original text is: Hi! Hello
preprocessed text is: Hi Hello
[4, 9]

OS:Windows 10,Python 3.7,用于预处理的正则表达式

我正在尝试从用户那里得到一个句子,并在后端使用正则表达式对其进行预处理,以删除特殊字符,然后我需要发回特定单词的位置以突出显示...

python regex nlp text-processing
1个回答
0
投票

字符串中的第一个字符在0的位置,然后Hello在字符串3Hi Hello的位置。

© www.soinside.com 2019 - 2024. All rights reserved.