我正在尝试将几个正则表达式与其中的任意数量的空格连接起来,这些空格由变量定义
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
关于python - 在 Python 中,如何使用正则表达式作为分隔符连接字符串列表而不用反斜杠字符转义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42418232/