Модуль Python для замены двоичных данных внутри текстового файла? - PullRequest
1 голос
/ 08 июля 2011

Я знаю, что смешивать текст и двоичный код ужасно, но я должен это сделать.

Я хочу заменить двоичное содержимое («Content-Type: image» и «----») строкой «XXXXXXXX»

Итак, код для теста:

# 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 Ответ

1 голос
/ 17 июля 2011

Это работает для меня:

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

По сути, это жадное совпадение со всеми символами от Content-Type: image до -----. 0 означает «соответствовать всем вхождениям этого шаблона». Возможно, это для вас излишне, но вы не можете его пропустить, так как вы также хотели использовать флаг re.DOTALL, который изменяет значение «любых символов», включая также новые строки.

НТН!

...