Есть ли функция для удаления буквенно-цифровых слов из предложения с использованием python

#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. Я думал, вы хотите также удалить числа. Пожалуйста, посмотрите мое редактирование.