Заменить ненужные специальные символы из строки, сохранить специальные символы между двумя числовыми - PullRequest
0 голосов
/ 08 сентября 2018

Привет, я работаю над одним проектом НЛП, где мне нужно идентифицировать названия организаций / организаций из текста. Однако слова в строке объединяются с символами (_:,), как показано ниже:

RING_LECO:108_.250X.436X.093V_772_520

Я бы хотел очистить строку, как показано ниже:

Ring Leco 108 .250X.436X.093V 772_520

Мы удалили специальные символы между двумя словами (A-Z: A-Z, A-Z: 0-9), но сохранили символ _ между 772 и 520.

Есть ли способ, которым я мог бы сделать это?

Ответы [ 2 ]

0 голосов
/ 08 сентября 2018

Попробуйте использовать

(?<=\D)[_:,]|[_:,](?=\D)

\D представляет нецифровый символ, поэтому шаблон соответствует специальным символам (_:,), которые имеют нецифровый символ хотя бы на одной стороне.

str = 'RING_LECO:108_.250X.436X.093V_772_520'
pattern = re.compile(r'(?<=\D)[_:,]|[_:,](?=\D)')
print(pattern.sub(' ', str))

Выход:

RING LECO 108 .250X.436X.093V 772_520
0 голосов
/ 08 сентября 2018

Это регулярное выражение должно сделать трюк:

_([^0-9]?<=)|(?=[^0-9])_

На английском языке: «до или после подчеркивания не число»

? <= Означает, что все, что <strong>предшествует , является группой для захвата

? = Означает, что все, что следует за - это группа для захвата

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...