2013-02-21 127 views
1

我正在運行將一堆信息轉儲到目錄中的文件的進程。我稍後運行相同的過程,並對目錄進行比較以查看發生了什麼變化。由於內存地址的緣故,我收到了一些虛假的更改。替換字符串中的未知值

例如:

  1. 運行1給出

    0xb7390dd0 
    
  2. 運行2給出

    0xb73909c8 
    

我想是能夠忽略的事實,即內存地址是不同的?什麼是完成這個最好的方法?

我不能使用.replace(),因爲我不知道地址是什麼。

+0

您可以創建一個正則表達式匹配的價值模式和替換匹配值 – avasal 2013-02-21 15:31:55

+0

爲什麼不從你首先轉儲的信息中排除內存地址? – 2013-02-21 15:38:50

回答

1

您可以創建一個正則表達式匹配的價值模式,更換匹配的值

>>> pattern = r'0x\w{8}' 
>>> matcher = re.compile(pattern) 
>>> matcher.match('0xb73909c8: has the error') 
<_sre.SRE_Match object at 0x01E25288> 
>>> matcher.match('0xb73909c8: has the error').group() 
'0xb73909c8' 

那麼你可以做

>>> '0xb73909c8: has the error'.replace(matcher.match('0xb73909c8: has the error').group(), 'Address') 
'Address: has the error' 
+0

你可以寫成'r'0x \ w \ w \ w \ w \ w \ w \ w \ w''短爲'r'0x \ w {8}''。 – Michael 2013-02-21 15:38:57

+0

@Michael:謝謝更新 – avasal 2013-02-21 15:40:31