2012-05-13 44 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; 

仍然有一些;不是由.,爲什麼更換?

使用Python 2.6

+1

替換';'時使用「ignorecase」似乎沒有多大意義。 – georg

回答

6

更新 - 在Python 2.6,你可以只是這樣做:

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

對於Python 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

相關問題