2013-07-29 90 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 

也可以有從你給它不同的含義。