Пунктуация полосы с регулярным выражением - python

Мне нужно использовать регулярное выражение, чтобы убрать пунктуацию в начале и конце слова. Кажется, регулярное выражение будет лучшим вариантом для этого. Я не хочу, чтобы пунктуация удалялась из слов типа "ты", поэтому я не использую .replace().

Ответ 1

Вам не нужно регулярное выражение для выполнения этой задачи. Используйте str.strip с помощью string.punctuation:

>>> import string
>>> string.punctuation
'!"#$%&\'()*+,-./:;<=>[email protected][\\]^_`{|}~'
>>> '!Hello.'.strip(string.punctuation)
'Hello'

>>> ' '.join(word.strip(string.punctuation) for word in "Hello, world. I'm a boy, you're a girl.".split())
"Hello world I'm a boy you're a girl"

Ответ 2

Вы можете удалить пунктуацию из текстового файла или конкретного строкового файла, используя регулярное выражение следующим образом:

new_data=[]
with open('/home/rahul/align.txt','r') as f:
    f1 = f.read()
    f2 = f1.split()



    all_words = f2 
    punctuations = '''!()-[]{};:'"\,<>./[email protected]#$%^&*_~''' 
    # You can add and remove punctuations as per your choice 
    #removing stop words in hungarian text and  english text and 
    #display the unpunctuated string
    # To remove from a string, replace new_data with new_str 
    # new_str = "My name$#@ is . rahul -~"

    for word in all_words: 
        if word not in punctuations:
           new_data.append(word)

    print (new_data)

PS - Сделайте идентификацию правильно, как требуется. Надеюсь это поможет!!

Ответ 3

Я думаю, что эта функция будет полезна и кратка в удалении пунктуации:

import re
def remove_punct(text):
    new_words = []
    for word in text:
        w = re.sub(r'[^\w\s]','',word) #remove everything except words and space#how 
                                        #to remove underscore as well
        w = re.sub(r'\_','',w)
        new_words.append(w)
    return new_words