2013-07-29 170 views
0

我想创建一个浮出该字符串的删除所有非数字:4\xb1.3189125061 我目前使用这样的:麻烦从字符串

re.sub(r'[^\d.-]+', "", "4\xb1.3189125061") 

但这只是输出:4.3189125061始终删除后的数字\xb。 有没有人知道这个解决方案?

+0

什么是预期*输出? '\ xb1'是一个python转义码,顺便说一句。 –

回答

0

如图使用ord, “\ XB1” 是单个字符:

>>> ord('\xb1') 
177 
>>> 

要解决这个问题,可以添加一个 “R” 中的字符串的前面:

>>> import re 
>>> re.sub(r'[^\d.-]+', "", r"4\xb1.3189125061") 
'41.3189125061' 
>>> 

或使用repr

>>> import re 
>>> re.sub(r'[^\d.-]+', "", repr("4\xb1.3189125061")) 
'41.3189125061' 
>>> 
2

Python看到一个字符为\xb1转义码。该1不是一个单独的字符:

>>> len('\xb1') 
1 

因此,它不是一个数字,一个点或短划线和正则表达式中删除。

您可能需要弄清\xb1字节在原始数据中的含义。例如,在拉丁美洲-1,B1码点代表的是±性格,使你的价值是这样的:

4 ± .3189125061 

也可以有从你给它不同的含义。