且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何使用 .translate() 从 Python 3.x 中的字符串中删除标点符号?

更新时间:2023-11-13 18:54:10

您必须使用传递给 str.translate 方法的 maketrans 创建一个转换表.

You have to create a translation table using maketrans that you pass to the str.translate method.

在 Python 3.1 和更新版本中,maketrans 现在是一个 静态-str 类型上的方法,因此您可以使用它来创建您想要None的每个标点符号的翻译.

In Python 3.1 and newer, maketrans is now a static-method on the str type, so you can use it to create a translation of each punctuation you want to None.

import string

# Thanks to Martijn Pieters for this improved version

# This uses the 3-argument version of str.maketrans
# with arguments (x, y, z) where 'x' and 'y'
# must be equal-length strings and characters in 'x'
# are replaced by characters in 'y'. 'z'
# is a string (string.punctuation here)
# where each character in the string is mapped
# to None
translator = str.maketrans('', '', string.punctuation)

# This is an alternative that creates a dictionary mapping
# of every character from string.punctuation to None (this will
# also work)
#translator = str.maketrans(dict.fromkeys(string.punctuation))

s = 'string with "punctuation" inside of it! Does this work? I hope so.'

# pass the translator to the string's translate method.
print(s.translate(translator))

这应该输出:

string with punctuation inside of it Does this work I hope so