python re模块替换文本文件中的二进制数据?

时间:2011-07-08 07:27:52

标签: python regex binary content-type

我知道混合文本和二进制文件很糟糕,但我必须这样做。

我想用字符串“XXXXXXXX”替换二进制内容,即“Content-Type:image”和“----”,

所以测试代码是:

# coding=utf-8
import re
raw_data = open('r_img.txt').read()
#data = re.sub(r"Content-Type: image.*?-----","Content-Type: imageXXXXXXX-----", raw_data, re.S)
data = re.sub(r"Content-Type: image[^-]*-----","Content-Type: imageXXXXXXX-----", raw_data, re.S)
print data

文件r_img.txt将是:

Content-Disposition: form-data; name="commodity_pic1"; filename="C:\Documents and Settings\tim\My Documents\My Pictures\Pic\222A8888.jpg"

Content-Type: image/pjpeg



EEE? JFIF  H H  EEE C 

EEE C       

 EEEWhfEEE[e?EEEEEEqEEEEEEEEEEEEEEEZIOEEE(r5?-iEEEEEEEEEEEEEEE?EEE?EEEEEE
-----------------------------7db27132d0198

我尝试过string.replace()和re.sub,但我还是找不到答案。

1 个答案:

答案 0 :(得分:1)

这对我有用:

data = re.sub(r"Content-Type: image.*-----","Content-Type: imageXXXXXXX-----", 
              raw_data, 0, re.DOTALL)

基本上它以贪婪的方式匹配Content-Type: image-----之间的所有字符。 0表示“匹配此模式的所有出现”。可能这对你来说是多余的,但是你不能跳过它,因为你还想使用修改“任何字符”含义的标志re.DOTALL来包含换行符。

HTH!

相关问题