2011-07-08 9 views
1

私はテキストとバイナリの混合がひどいことを知っていますが、私はこれを行う必要があります。だから、テストのためのコードは、文字列 "XXXXXXXX"テキストファイル内のバイナリデータを置き換えるためのPython reモジュール?

によって及び "----"、:

は、私は、 "画像のContent-Type" と周りにあるバイナリコンテンツを、交換したいです

# 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が、私はまだ答えを見つけることができません。

+0

なぜPythonのマルチパートMIME機能を使用しないのですか? –

+0

何らかの理由で、私はmysqlデータベースからいくつかの製品情報を抽出し、次にSOAPリクエストを構築し、pythonのsudsライブラリを使ってこのSOAPリクエストをリモートサーバに送信する必要があります。 しかし、情報抽出の一部は、バイナリデータとテキストデータとの組み合わせです – pvd

+1

それは本当に私の質問に答えることはありません。 –

答えて

1

これは私の作品:

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

は、基本的にそれは貪欲な方法でContent-Type: image-----間のすべての文字にマッチします。 0は "このパターンのすべての出現と一致"を意味します。おそらくこれは余分なものですが、「任意の文字」の意味を変更して改行を含めるフラグre.DOTALLを使用したかったので、スキップすることはできません。

HTH!

関連する問題