Я использую 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)