2013-02-21 84 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