python: удаление всех знаков препинания с помощью string.punctuation, кроме нескольких других - PullRequest
0 голосов
/ 29 апреля 2020

Я пытаюсь удалить пунктуацию в строке с именем fs, используя string.punctuation с кодом:

fs = fs.translate({ord(i): None for i in string.punctuation}) 

В тексте есть несколько подчеркиваний (_)

Как мне реализовать мой код так, чтобы он игнорировал подчеркивания и удалял все остальные?

Это как:

fs = fs.translate({ord(i): None for i in string.punctuation if '_' not in string.punctuation})

1 Ответ

1 голос
/ 29 апреля 2020

string.punctuation сама по себе является строкой, поэтому мы можем просто работать с измененной версией строки: {ord(i): None for i in string.punctuation.replace('_', '')}.

Более общий метод, который вы ищете: if будет проверяться отдельно for каждое i значение и подавлять вывод (пары ключ-значение для dict), когда проверка ложна. Таким образом, условие должно быть не ... if '_' not in string.punctuation, а просто ... if i != '_'.

...