Python str.maketrans Удалить пунктуацию с пустым пространством - PullRequest
0 голосов
/ 05 октября 2018

Я использую maketrans из строковый модуль в Python 3, чтобы выполнить простую предварительную обработку текста, такую ​​как понижение, удаление цифр и знаков препинания.Проблема в том, что при удалении знаков препинания все слова соединяются вместе без пробелов!Например, допустим, у меня есть следующий текст:

text='[{"Hello":"List:","Test"321:[{"Hello":"Airplane Towel for Kitchen"},{"Hello":2 " Repair massive utilities "2},{"Hello":"Some 3 appliance for our kitchen"2}'

text = text.lower () text = text.translate (str.maketrans ('', '', string.digits))

Работает просто отлично, выдает:

'[{"hello":"list:","test":[{"hello":"airplane towel for kitchen"},{"hello": " repair massives utilities "},{"hello":"some  appliance for our kitchen"}'

Но как только я хочу убрать знаки препинания:

text=text.translate(str.maketrans(' ',' ',string.punctuation))

Это дает мне следующее:

'hellolisttesthelloairplane towel for kitchenhello nbsprepair massives utilitiesnbsphellosome  appliance for our kitchen'

В идеале это должно дать:

'hello list test hello airplane towel for kitchen hello nbsp repair massives utilities nbsp hello some  appliance for our kitchen'

Нет особой причины, по которой я делаю это с макетрансами, но мне нравится, так как это быстро и просто и немного застряло в решении проблемы.Спасибо!

Отказ от ответственности: я уже знаю, как это сделать с re , как показано ниже:

import re
s = "string.]With. Punctuation?"
s = re.sub(r'[^\w\s]','',s)

1 Ответ

0 голосов
/ 05 октября 2018

хорошо ... это работает

txt = text.translate(str.maketrans(string.punctuation, ' ' * len(string.punctuation))).replace(' '*4, ' ').replace(' '*3, ' ').replace(' '*2, ' ').strip()
...