2024-09-29 02:23:40 发布
网友
我需要写一个正则表达式来获取下面列表中的所有字符。。 (删除所有不在列表中的字符)
allow_characters = "#.-_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
我不知道怎么做,我应该用吗重新匹配或者关于芬德尔或者回复sub...? 你知道吗
提前多谢了。你知道吗
完全不要使用正则表达式,首先将allow_characters转换为一个集合,然后将''.join()与去除不需要的字符的生成器表达式一起使用。假设要转换的字符串名为s:
allow_characters
''.join()
s
allow_char_set = set(allow_characters) s = ''.join(c for c in s if c in allow_char_set)
也就是说,下面是正则表达式的外观:
s = re.sub(r'[^#.\-_a-zA-Z0-9]+', '', s)
您可以将allow_characters字符串转换成这个正则表达式,但我认为第一种解决方案要简单得多。你知道吗
编辑:正如DSM在评论中指出的,str.translate()通常是一个非常好的方法来做这样的事情。在这种情况下,它有点复杂,但您仍然可以这样使用它:
str.translate()
import string allow_characters = "#.-_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" all_characters = string.maketrans('', '') delete_characters = all_characters.translate(None, allow_characters) s = s.translate(None, delete_characters)
完全不要使用正则表达式,首先将
allow_characters
转换为一个集合,然后将''.join()
与去除不需要的字符的生成器表达式一起使用。假设要转换的字符串名为s
:也就是说,下面是正则表达式的外观:
您可以将
allow_characters
字符串转换成这个正则表达式,但我认为第一种解决方案要简单得多。你知道吗编辑:正如DSM在评论中指出的,
str.translate()
通常是一个非常好的方法来做这样的事情。在这种情况下,它有点复杂,但您仍然可以这样使用它:相关问题 更多 >
编程相关推荐