在python中用反斜杠拆分字符串

use*_*086 21 python

简单的问题,但我正在与它挣扎太多时间.基本上我想用\(反斜杠)分割一个字符串.

 a = "1\2\3\4"
Run Code Online (Sandbox Code Playgroud)

试图逃避反斜杠但它似乎不起作用:

 print(a.split('\'))
 print(a.split('"\"'))
 print(a.split('\\'))
 print(a.split('"\\"'))
Run Code Online (Sandbox Code Playgroud)

我想得到这个结果:

 ['1','2','3','4']
Run Code Online (Sandbox Code Playgroud)

提前谢谢了

Hen*_*ter 42

你有正确的想法逃避反斜杠,但不管它看起来如何,你的输入字符串实际上没有任何反斜杠.你也需要在输入中逃避它们!

>>> a = "1\\2\\3\\4"  # Note the doubled backslashes here!
>>> print(a.split('\\'))  # Split on '\\'
['1', '2', '3', '4']
Run Code Online (Sandbox Code Playgroud)

您也可以使用原始字符串文字作为输入,如果它可能有许多反斜杠.这种符号看起来更清晰(IMO),但确实有一些局限性:阅读文档!

>>> a = r"1\2\3\4"
>>> print(a.split('\\'))
['1', '2', '3', '4']
Run Code Online (Sandbox Code Playgroud)

如果你到了a其他地方,并且a.split('\\')没有适当地拆分可见的反斜杠,这意味着你在那里有其他东西而不是真正的反斜杠.试着print(repr(a))看看"文字"字符串实际上是什么样的.

>>> a = '1\2\3\4'
>>> print(a)
1???
>>> print(repr(a))
'1\x02\x03\x04'

>>> b = '1\\2\\3\\4'
>>> print(b)
1\2\3\4
>>> print(repr(b))
'1\\2\\3\\4'
Run Code Online (Sandbox Code Playgroud)


Jon*_*dle 5

您可以使用反斜杠拆分字符串a.split('\\').

这种情况在您的情况下不起作用的原因是\x您的分配a = "1\2\3\4"被解释为八进制数.如果在字符串前加上r,则会得到预期的结果.