2013-12-12 100 views
0

我試圖將一些Perl代碼移植到python。不熟練perl是挑戰,但我已經完成了大部分工作。有一個函數執行一個單詞替換,我不知道是否有一個直接的python equivelent。將此perl替換轉換爲python

$my_string =~ s/^(.*?) \(The\)$/The $1/; 
$my_string=~ s/\bL\.? ?L\.? ?C\.?\b//; 
$my_string =~ s/[(),]//g; 

我想,我可以使用的東西,如:

re.sub('s/^(.*?) \(The\)$', '$/The 1/', my_string) 

第一個樣品,但我無能,其他。

感謝您的任何見解。

回答

6

您需要在此刪除s//零件,並使用\1作爲反向參考。使用原始字符串使得這個可行:

my_string = re.sub(r'^(.*?) \(The\)$', r'The \1', my_string) 
my_string = re.sub(r'\bL\.? ?L\.? ?C\.?\b', '', my_string) 
my_string = re.sub(r'[(),]', '', my_string) 

這些替代默認情況下(在g標誌做什麼)「全球性」;添加一個整數作爲第四個參數,如果你需要限制這個:

my_string = re.sub(r'^(.*?) \(The\)$', r'The \1', my_string, 1) 
my_string = re.sub(r'\bL\.? ?L\.? ?C\.?\b', '', my_string, 1) 
my_string = re.sub(r'[(),]', '', my_string) 
+0

@Blender:yup,fixed。 –

+0

注意默認情況下,Python的're.sub'是全局的(/ g)。如果您只想替換第一個項目,請指定count = 1。 –