包含反斜杠的多行字符串的Python3.5拆分线

2024-10-02 12:31:57 发布

您现在位置:Python中文网/ 问答频道 /正文

如何有效地将包含反斜杠的多行字符串拆分为单独的行?在

下面是我正在处理的输入示例:

strInput = '''signalArr(0)="ASCB D\axx\bxx\fxx\nxx"
signalArr(1)="root\rxx\txx\vxx"'''

我试过这个(把单反斜杠转换成双反斜杠。所以反斜杠转义具有优先权,后面的字符将被“正常”处理:

^{pr2}$

我想要:

lineList = strInputProcessed.splitlines()

>> ['signalArr(0)="ASCB D\axx\bxx\fxx\nxx"','signalArr(1)="root\rxx\txx\vxx"']

我得到的是:

>> ['signalArr(0)="ASCB D\x07xx\x08xx', 'xx', 'xx"', 'signalArr(1)="root', 'xx\txx', 'xx"']

Tags: 字符串示例rootxx斜杠txxstrinputfxx
1条回答
网友
1楼 · 发布于 2024-10-02 12:31:57

尝试将输入存储为原始字符串,则所有“\n”字符将自动转义:

>>> var = r'''abc\n
... cba'''
>>> print var
abc\n
cba
>>> var.splitlines()
['abc\\n', 'bca']

(注意''前的r。这表示字符串是原始的)

另外,如果您希望转义现有的字符串,而不是上面的replace命令,您可以使用encode with'string escape'。在

^{pr2}$

同样,如果需要,可以撤消字符串的字符串转义。在

>>> s.decode('string-escape')

最后,我想在你的背景下加上:

>>> strInput = r'''signalArr(0)="ASCB D\axx\bxx\fxx\nxx"
... signalArr(1)="root\rxx\txx\vxx"'''
>>> strInput.splitlines()
['signalArr(0)="ASCB D\\axx\\bxx\\fxx\\nxx"', 'signalArr(1)="root\\rxx\\txx\\vxx"']

即使多余的\出现在打印的字符串上,它们实际上并不存在于内存中。迭代字符串可以证明这一点,因为它没有给您额外的\字符用于转义。在

>>> s = r'\a\b\c'
>>>
>>> for c in s:
...  print c
\
a
\
b
\
c
>>> list(s)
['\\', 'a', '\\', 'b', '\\', 'c']

相关问题 更多 >

    热门问题