Skip to main content
 首页 » 编程设计

python之在 Python 中,如何使用正则表达式作为分隔符连接字符串列表而不用反斜杠字符转义

2025年05月04日41Renyi-Fan

我正在尝试将几个正则表达式与其中的任意数量的空格连接起来,这些空格由变量定义

SPACES = "\s*" 

但是,如果我尝试

SPACES.join(['from','till']) 

我明白了

'from\\s*till' 

中间有一个额外的反斜杠字符。是否可以在不插入额外的 \ 的情况下使用 join 方法(以便结果为 'from\s*till')?

请您参考如下方法:

您只是在观察字符串对象的 __repr__ 和它的 __str__ 表示之间的区别。前者以转义形式显示特殊字符(您可以/应该用来实例化相同字符串对象的文字形式),后者则不显示:

> SPACES = "\s*" 
> pat = SPACES.join(['ab', 'cd']) 
> pat 
'ab\\s*cd'  # == repr(pat) 
> print pat 
ab\s*cd     # == str(pat) 
# re.match(pat, 'ab   cd') matches as expected 

正如其他答案中提到的,'\s' 不是有效的转义序列,因此反斜杠被视为文字反斜杠,也可以作为文字 '\\':

> '\s*' == '\\s*' 
True 
> r'\'  # not a valid raw string! -> error