2016-10-04 3 views
0

Людей,Python регулярного выражения для удаления знаков пунктуации за исключением из URL-адресов и десятичных чисел

мне нужно регулярное выражение, чтобы удалить знаки препинания из строки, но сохранить акценты и URL. Я также должен хранить упоминания и хэштеги из этой строки.

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

import unicodedata 

if __name__ == "__main__": 
    text = "Apenas um teste com acentuação. Para pontuação também! #python @stackoverflow http://xyhdhz.com.br" 
    text = unicodedata.normalize('NFKD', text).encode('ascii','ignore') 
    print text 

Выход на следующий текст "Apenas гм Teste ком acentuação. Para pontuação também! #python @stackoverflow http://xyhdhz.com.br" должен быть "Apenas гм Teste ком acentuação Para pontuação também #python @stackoverflow http://xyhdhz.com.br"

Как я мог это сделать?

+3

Вы должны предоставить код, что вы пробовали, один или два примера ввода и вывода желаемого для них. – trincot

+0

@trincot Спасибо. Я отредактировал главный пост. –

ответ

0

Вы можете использовать Python's regex module и re.sub() для замены любых символов, от которых вы хотите избавиться. Вы можете использовать черный список и заменить все символы, которые вам не нужны, или использовать белый список всех символов, которые вы хотите разрешить, и только сохранить их.

Это удалит что-либо в квадратных скобках класса символов:

import re 

test = r'#test.43&^%à, è, ì, ò, ù, À, È, Ì, Ò, ÙÃz' 
out = re.sub(r'[/.!$%^&*()]', '', test) 
print(out) 
# Out: #test43à è ì ò ù À È Ì Ò ÙÃz 

(испытанной с Python 3.5)

Чтобы сохранить URL, вам придется сделать немного больше обработки для проверки этого формата (который довольно разнообразен). Какой тип ввода/вывода вы ищете в этом случае?

редактировать: основанный на вашем добавленным примере ввода:

test = "Apenas um teste com acentuação. Para pontuação também! #python @stackoverflow" 
# Out: Apenas um teste com acentuação Para pontuação também #python @stackoverflow 
+0

Спасибо. Я не могу исправить выход из-за упоминаний. Я поставлю его в исходное сообщение –

 Смежные вопросы

  • Нет связанных вопросов^_^