#python-3.x #text #nlp
#python-3.x #текст #nlp
Вопрос:
Дано предложение «привет, я остаюсь на 4-й перекрестной улице, и мой номер ssn — 56tyuh». Я хочу удалить такие слова, как буквенно-цифровые (4th и 56tyuh). Используется ли isalpha() только для проверки наличия буквенно-цифровых символов в предложениях? Если нет, то как мне использовать ее для удаления буквенно-цифровых символов
Ответ №1:
Для этого вам нужно будет использовать регулярное выражение. Регулярное выражение может сбивать с толку, но в данном случае это довольно просто.
import re
s = 'hi I stay at 4th cross street and my ssn number is 56tyuh'
r = r'S*d S*'
cut_string = re.sub(r, '', s)
Давайте разберем это:
r
является переменной регулярного выражения, которая обнаруживает последовательности символов из 0-n начальных символов, не содержащих пробелов, за которыми следуют 1-n числовых символов и снова 0-n завершающих символов, не содержащих пробелов.
re.sub
заменяет совпадения нашего регулярного выражения вторым параметром, в нашем случае пустой строкой. Таким образом, он удаляет все совпадения нашего регулярного выражения из строки.
Редактировать:
Это также приведет к удалению чисел. Если вы хотите удалить только буквенно-цифровые слова, внесите следующие изменения:
r = r'([a-zA-Z]*d [a-zA-Z] |[a-zA-Z] d [a-zA-Z]*)'
Обратите |
внимание на центр переменной. Это означает либо сопоставление первой части в круглых скобках, либо второй. Первое соответствовало 4th
бы, но нет ep95
, для второго верно обратное.
Комментарии:
1. Оцените объяснение. Есть идеи о том, почему цифры также удаляются вместе с буквенно-цифровыми символами?
2. Я думал, вы хотите также удалить числа. Пожалуйста, посмотрите мое редактирование.