2012-05-13 11 views
3

は、私はこのようなプログラムがあります。Pythonの正規表現re.sub:何か

import re 

x='aaaaaaaa;aa;aaa;aaa;aaaaaaaaaa;' 
x=re.sub(';','.',x, re.IGNORECASE) 

print x 

をしかし、出力は次のようなものです:

aaaaaaaa.aa.aaa;aaa;aaaaaaaaaa; 

まだ.、なぜによって置き換えられていないいくつかの;あります?

+1

「;」を置き換えるときに「ignorecase」を使用することは意味をなさないと思われます。 – georg

答えて

6

更新のPython 2.6を使用して

- Pythonの2.6で、あなただけのこれを行うことができます:Python用

>>> re.sub('(?i);','.',x) 
'aaaaaaaa.aa.aaa.aaa.aaaaaaaaaa.' 

2.7以降および3.0+

を代わりにこれを行い、第三パラメータは実際にはカウント(置換の回数)であり、re.IGNORECASEは単純に整数なので、カウントとして使用します。

>>> re.sub(';','.',x, flags=re.IGNORECASE) 
'aaaaaaaa.aa.aaa.aaa.aaaaaaaaaa.' 

>>> re.IGNORECASE 
2 
+0

Python 2.6でエラーが発生しました:TypeError:sub()は予期せぬキーワード引数 'flags'を持っています(2.7版で動作します^^) – heathen90

+0

使用しているPythonのバージョンは?編集:Nvmあなたのコメントを読む – jamylak

+0

パターンを ''(?​​i);に変更することができます同じことをします – jamylak