2015-11-03 68 views
2

我試圖替換字符串元素,但只有在匹配後沒有附加字符時,儘管匹配前的字符可能會有所不同......例如,如果我將包含下劃線的名稱標記爲一個名稱,並且我想要替換以「R」結尾的任何內容,但不包含以它開頭的元素......因此它將替換「R」或「SideR」,但不替換「Rear」是「R」後面的字符。我記得以前有人給我看過這樣的東西,但是找不到它。這是類似於\ n(但不是\ n,這是一個新行,沒有新行),但可以放在字符串的末尾以表示沒有其他字符(對於開始......可能對於開始或結束都是一樣的)。Python字符串精確結束,沒有附加字符

test="New_R_SideR_Rear_Object" 
tokens=test.split("_") 
newtest="" 
for each in tokens: 
    if "R" in each: 
     each=each.replace("R", "L") 
    newtest=(newtest+each+"_") 

我肯定有什麼東西我可以「在每個‘行,或.replace行添加到的’如果」 R結束,這將允許我以確保「後」沒有按」 t變成「Lear」,但「R」和「SideR」都被替換。

以上只是爲了便於說明而簡化。感謝您的時間

+0

正則表達式。你正在尋找正則表達式。 –

+1

爲什麼不只是'測試=「New_R_SideR_Rear_Object」.replace('R _','L _')' –

+0

看看正則表達式(re模塊)。 –

回答

3

您可以使用正則表達式。正則表達式語言提供了一種簡潔的方式來表達如何匹配文本。舉例來說:

$ python3 
>>> import re 
>>> test="New_R_SideR_Rear_Object" 
>>> re.sub(r"R(_|\b)", r"L\1", test) 
'New_L_SideL_Rear_Object' 
>>> 
+0

謝謝,我會研究正則表達式。不完全確定這是我正在尋找的,但可能是。我的目的不僅僅是替換(應該提到...有時候我太具體了)......能夠做到「如果X中的Y:」與相同的標準進行比較也是我需要的一部分...但看起來可能會包括它。當我讀到 – Kratch

+0

以上的表達時,我會跟進。在if語句中用\ b重新搜索,得到我正在尋找的東西。謝謝。 – Kratch