Python - 在" \\"之后拆分时丢失数据

时间:2016-02-29 16:19:17

标签: python string python-3.x split

我在尝试分析以下列形式的数据时遇到了一些问题:

"0\r\n\359"

数字可以是任何整数(那些是我试图收集的数字)。

x = "0\r\n\359"
x = x.split("\\")
print(x)

打印结果为['0\r\n\x1d9'] 这是不受欢迎的。

如何让我的代码只打印数字,最好用某些东西分隔?

4 个答案:

答案 0 :(得分:3)

你的字符串中没有任何反斜杠。字符串文字中的反斜杠是转义符。 ' \ r'是一个回车,' \ n'是一个换行符,' \ 35; (十六进制1d)是一个名为"组分隔符"的控制字符。你可以试一下原始字符串:

$.ajax({
  url: "test.html",
  context: document.body
}).done(function() {
  $( this ).addClass( "done" );
});

答案 1 :(得分:1)

尝试类似:

print ' something '.join(r"0\r\n\359".split('\\r\\n\\'))

答案 2 :(得分:1)

不确定这是不是你想要的?:

\r\n是特殊字符,如回车符和换行符,因此除非将它们指定为原始字符串,否则您将无法拆分它们的反斜杠。

>>> re.search(r'\d+$', r'0\r\n\359').group()
'359'
>>> re.search(r'\d+$', '0\r\n\359').group()
'9'
>>> re.split(r'\\', r'0\r\n\359')
['0', 'r', 'n', '359']
>>> re.split(r'\\', '0\r\n\359')
['0\r\n\x1d9']

请注意,如何将r添加到字符串中,以便将其视为不转义\的行字符串。所以在前面的答案中提到的\35是另一个特殊/控制字符,除非你将字符串指定为原始字符串,否则无法检索其数字。但这带来了你是否想要它的问题?。

答案 3 :(得分:1)

您可能希望研究正则表达式来解析字符串。如果要在字符串中查找所有整数表达式,可以使用re.findall和模式r'\d+'来提取所有连续数字组。以下是使用您提供的字符串可以预期的示例。

>>> import re
>>> x = '0\r\n359'
>>> re.findall(r'\d+', x)
['0', '359']
>>>