我有一段莎士比亞戲劇的對話,基本上我想做的是:在每個(gè)演員姓名后插入一個(gè)冒號(hào) (:)。于是對話框變成了這樣:布魯圖斯:布拉布拉布拉CESAR:布拉布拉布拉布拉安東尼:布拉布拉布拉布拉您可以看到情況并非如此,如下所示:line_1 = 'CASSIUS Brutus, I misunderstood your feelings, and therefore kept to myself certain thoughts I might have shared. Tell me, good Brutus, can you see your face?'line_2 = 'Trumpets play. Everyone exits except BRUTUS and CASSIUS .'對話框的格式如下:演員姓名在行首全部大寫 例如line_1 >>> CASSIUS即 CASSIUS 是這里的演員。但是,有些臺(tái)詞包含以大寫格式書寫的劇中演員的姓名(不是在臺(tái)詞的開頭)。請參見第 2 行。需要的是一個(gè)正則表達(dá)式或 Python 方法來在每個(gè)演員姓名后插入一個(gè)冒號(hào)。我們通過以下兩個(gè)條件知道演員的名字:1) 它在行的開頭。2) 全部以大寫格式書寫。CASSIUS 是 line_1 中的演員(它滿足兩個(gè)條件)。然而,BRUTUS 和 CASSIUS 的第 2 行并非如此(它們位于行的中間),因此它們的名稱后沒有冒號(hào)。這是我的嘗試,適用于第 2 行中不需要的詞 BRUTUS 和 CASSIUS!re.sub(r'(?<=([A-Z][A-Z]\b))', ': ', line_1)re.sub(r'(?<=([A-Z][A-Z]\b))', ': ', line_1)我得到以下輸出,這不好!'CASSIUS: Brutus, I misunderstood your feelings, and therefore kept to myself certain thoughts I might have shared. Tell me, good Brutus, can you see your face?''Trumpets play. Everyone exits except BRUTUS: and CASSIUS: .'
1 回答

慕桂英4014372
TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超13個(gè)贊
您的方法過于復(fù)雜。"^"
只需替換字符串開頭 ( ) 處的兩個(gè)或多個(gè)大寫字母即可。這里,"\\1"
是對括號(hào)中第一組的引用。
re.sub("^([A-Z]{2,})", "\\1:", line_1)# 'CASSIUS: Brutus,...'
添加回答
舉報(bào)
0/150
提交
取消