因此,我有一长串具有相同格式的字符串,并且我想找到最后一个“”。每个字符,然后将其替换为“。-”。我尝试使用rfind,但似乎无法正确利用它来执行此操作。
rreplace的
—
格雷厄姆(Graham)
因此,我有一长串具有相同格式的字符串,并且我想找到最后一个“”。每个字符,然后将其替换为“。-”。我尝试使用rfind,但似乎无法正确利用它来执行此操作。
Answers:
这应该做
old_string = "this is going to have a full stop. some written sstuff!"
k = old_string.rfind(".")
new_string = old_string[:k] + ". - " + old_string[k+1:]
要从右侧替换:
def replace_right(source, target, replacement, replacements=None):
return replacement.join(source.rsplit(target, replacements))
正在使用:
>>> replace_right("asd.asd.asd.", ".", ". -", 1)
'asd.asd.asd. -'
replacements=None
参数似乎对我来说是一个错误,因为如果省略参数,该函数将产生错误(在Python 2.7中进行了尝试)。我建议您删除默认值,将其设置为-1(无限制替换),或者更好地使其replacements=1
(根据OP的需要,该特定功能应为默认行为)。根据文档,此参数是可选的,但如果给定,则必须为int。
". -".join("asd.asd.asd.".rsplit(".", 1))
。您要做的就是从右侧进行字符串拆分1次,然后使用替换字符串再次连接该字符串。
一个班轮是:
str=str[::-1].replace(".",".-",1)[::-1]
.replace
处理反向字符串。传递的两个字符串replace
也必须颠倒。否则,当您第二次反转字符串时,刚插入的字母将向后。仅当用一个字母替换一个字母时才可以使用它,即使这样我也不会在您的代码中添加它,以防将来有人必须对其进行更改并开始怀疑为什么单词sdrawkcab被写入。
a = "A long string with a . in the middle ending with ."
#如果要查找任何字符串的最后一次出现的索引,在我们的示例中,我们#将查找with的最后一次出现的索引
index = a.rfind("with")
#结果将是44,因为索引从0开始。
天真的方法:
a = "A long string with a . in the middle ending with ."
fchar = '.'
rchar = '. -'
a[::-1].replace(fchar, rchar[::-1], 1)[::-1]
Out[2]: 'A long string with a . in the middle ending with . -'
Aditya Sihag的回答只有一个rfind
:
pos = a.rfind('.')
a[:pos] + '. -' + a[pos+1:]
a
吗?
'. -'
在输出中反转。
replace_right
情况要好得多)