Регулярное выражение для очистки строк слов (с акцентами) и чисел из пробелов или других символов в начале или конце - PullRequest
1 голос
/ 22 сентября 2019

Я использую python с искрой , чтобы обработать некоторые данные акцентными словами на португальском языке.

Некоторые примеры данных выглядят так:

 .. -- Água, 1234 ...

 - -- https://www.example.com/page.html *****

Я пытаюсь удалить все, что не является словом или числом, слева или справа от строки, получая чистые результаты, например:

   Água, 1234
   https://www.example.com/page.html

Лучшее, что я мог сделать, это:

 ^[^\\p{N}\\p{L}]]|[^\\p{N}\\p{L}]$

Но это не сработало.Я видел много решений, но они не совмещали начало и конец строки с символами ударения.

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 22 сентября 2019

Возможно, было бы хорошо, если бы мы изучили данные, которые у вас есть, тогда мы бы написали выражение, похожее на:

(?i)\S[a-z].+[a-z0-9]

или,

(?i)\S*[a-z].+[a-z0-9]

Демонстрация


Если вы хотите упростить / изменить / изучить выражение, это было объяснено на верхней правой панели regex101.com .При желании вы также можете посмотреть в эту ссылку , как она будет сопоставляться с некоторыми примерами входных данных.


Тест

import re


regex = r"(?i)\S[a-z].+[a-z0-9]"
string = """
.. -- Água, 1234 ...

 - -- https://www.example.com/page.html *****
"""

print(re.findall(regex, string))

Выход

['Água, 1234', 'https://www.example.com/page.html']
0 голосов
/ 22 сентября 2019

Мне удалось это сделать.

Благодаря αԋɱҽԃ αмєяιcαη, это не лучшее решение, поскольку оно выходит за пределы функции regexp_replace pyspark, но работает, просто добавило re.unicode пометить и создать udf.


regexp = re.compile(r'^\W+|\W+$',flags=re.UNICODE)

def remove_non_utf8(string):
    return regexp_2.sub('',regexp_1.sub('',string))

replace_utf8 = udf(remove_non_utf8)

При этом удаляются все символы, не связанные с юникодом, с начала или конца, использованные этот URL в качестве ссылки.

- РЕДАКТИРОВАТЬ-

Я пытался использовать:

**(?ui)^\W+|\W+$** 

С функцией regexp_replace pyspark это не сработало, поэтому я все еще использую решение regexp.

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