前缀为r的字符串的拆分行为

时间:2014-07-14 19:02:20

标签: python string string-split

能帮助我理解这种行为:

>>> a = "abc\\def\\ghi"
>>> a.split(r"\\")
['abc\\def\\ghi']

然而,在花了几分钟和排列后,我发现这个目前正在起作用:

>>> a.split("\\")
['abc', 'def', 'ghi']

你能否指出导致这种行为的文献/设计考虑因素?

1 个答案:

答案 0 :(得分:5)

您的字符串包含已转义的常规单个反斜杠:

>>> a = "abc\\def\\ghi"
>>> a
'abc\\def\\ghi'
>>> print(a)
abc\def\ghi

当您按"\\"分割时,您正在转义一个反斜杠,因此您将拆分一个反斜杠并获得三个元素的列表:['abc', 'def', 'ghi']。 当你按r"\\"分割时,你会被两个反斜杠拆分,因为在字符串前加上r前缀是Python的原始字符串符号(这与正则表达式无关)。这里重要的是在原始字符串文字中不以任何特殊方式处理反斜杠。

当您查看人的正则表达式时,经常看到带有r前缀的字符串的原因是他们不想转义反斜杠字符,这些字符在正则表达式中也有特殊含义。

关于正则表达式的进一步阅读:The Backslash Plague