Как удалить все начальные и конечные знаки препинания в Python?

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

import string

s = '.$ABC-799-99,#'

table = string.maketrans("","") # to remove punctuation
new_s = s.translate(table, string.punctuation)

print(new_s)
# Output
ABC79999

Как удалить все начальные и конечные знаки препинания в Python? Желаемый результат '.$ABC-799-99,#''ABC-799-99'.


person SparkAndShine    schedule 14.05.2016    source источник
comment
Я погуглил название вашего вопроса, и связанный дубликат был самым первым результатом с точным решением, которое вы ищете. Пожалуйста, сделайте больше исследований в будущем.   -  person TigerhawkT3    schedule 14.05.2016
comment
@ TigerhawkT3, спасибо, я исследовал SO.   -  person SparkAndShine    schedule 14.05.2016
comment
Поиск SO не очень хорош. Попробуйте Google в следующий раз.   -  person TigerhawkT3    schedule 14.05.2016
comment
@TigerhawkT3, буду иметь в виду. спасибо еще раз.   -  person SparkAndShine    schedule 14.05.2016
comment
Мне кажется странным, что у старого вопроса 0 голосов, а у этого дубликата 7. Ну что ж.   -  person TigerhawkT3    schedule 14.05.2016
comment
@ TigerhawkT3, это может быть связано с ключевыми словами. Возможная причина в том, что leading или trailing в таком контексте встречается чаще, чем starting.   -  person SparkAndShine    schedule 14.05.2016


Ответы (1)


Вы делаете именно то, что упоминаете в своем вопросе, просто str.strip.

from string import punctuation
s = '.$ABC-799-99,#'

print(s.strip(punctuation))

Выход:

 ABC-799-99

str.strip может содержать несколько символов для удаления.

Если вы просто хотите удалить начальные знаки препинания, вы можете str.lstrip:

s.lstrip(punctuation)

Или rstrip все знаки препинания в конце:

 s.rstrip(punctuation)
person Padraic Cunningham    schedule 14.05.2016
comment
Спасибо. Если я оставлю $, s.strip(string.punctuation.replace('$', '')), будет лучше? - person SparkAndShine; 14.05.2016
comment
@sparkandshine, не беспокойтесь, я думаю, что .punctuation.replace('$', '') довольно хорош, другой вариант - вручную создать строку знаков препинания минус $ и использовать то, что, я думаю, было бы намного сложнее. - person Padraic Cunningham; 14.05.2016