如何将 python 3 中字符串中的字符列入白名单?

How can I whitelist characters from a string in python 3?

我的问题很简单,我想从字符串中去除任何不是 A-Z 或 0-9 的字符。

基本上这是我正在尝试做的过程:

whitelist=['a',...'z', '0',...'9']

name = '_abcd!?123'

name.strip(whitelist)

print(name)

>>> abcd123

重要的是我不能只打印名称中的有效字符。我需要实际使用处于更改状态的变量。

您可以使用 re.sub 并提供与您要删除的内容完全匹配的模式:

import re
result = re.sub('[^a-zA-Z0-9]', '', '_abcd!?123')

输出:

'abcd123'

string与列表推导结合使用

import string
whitelist = set(string.ascii_lowercase + string.digits)
name = ''.join(c for c in name if c in whitelist)

您可以使用简单的正则表达式:

new_string = re.sub('[chars to remove]', '', old_string)

另请注意,字符串是不可变的。您需要分配一个新变量才能更改一个。