在字符串上使用 .translate() 来去除数字 [Python 3]

ast*_*lop 5 python string python-3.x

假设我有字符串“2okjser823ab”。如何使用 .translate() 从字符串中删除所有数字?

我发现在 Python 2.x 中你可以执行类似 .translate(None, '0123456789') 的操作,但如果我在 Python 3 中尝试这样做,它会告诉我该方法只接受一个参数。

小智 5

看起来 Python 3 有点难;不知道为什么。

\n\n

您可以执行以下操作:

\n\n
>>> import string\n>>> translation = str.maketrans(string.ascii_letters, string.ascii_letters, string.digits)\n>>> "2okjser823ab".translate(translation)\n\'okjserab\'\n
Run Code Online (Sandbox Code Playgroud)\n\n

您可能需要string.ascii_letters使用您期望的任何其他输入(string.ascii_letters + string.punctuation + string.whitespace例如 )进行扩展。

\n\n

编辑:我无法在 的 文档中清楚地找到它str.maketrans,但是如果您对前两个参数使用空字符串,则所有内容都将映射为 1 到 1,但删除部分(第三个参数)仍然会发生:

\n\n
>>> translation = str.maketrans("", "", string.digits)\n>>> "2ee\xc5\xb7\xc3\xbd\xc3\xa9eokjser823 ab.;\\t".translate(translation)\n\'ee\xc5\xb7\xc3\xbd\xc3\xa9eokjser ab.;\\t\'\n
Run Code Online (Sandbox Code Playgroud)\n