2015-11-03 61 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