所以我有一长串相同格式的字符串,我想找到最后一个“。” 每个字符,并将其替换为“。 - ”。我试过使用 rfind,但我似乎无法正确利用它来做到这一点。
问问题
140626 次
7 回答
168
这应该这样做
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:]
于 2013-01-24T07:35:09.320 回答
28
从右边替换:
def replace_right(source, target, replacement, replacements=None):
return replacement.join(source.rsplit(target, replacements))
正在使用:
>>> replace_right("asd.asd.asd.", ".", ". -", 1)
'asd.asd.asd. -'
于 2013-01-24T07:39:01.400 回答
15
我会使用正则表达式:
import re
new_list = [re.sub(r"\.(?=[^.]*$)", r". - ", s) for s in old_list]
于 2013-01-24T07:34:37.407 回答
6
一个班轮将是:
str=str[::-1].replace(".",".-",1)[::-1]
于 2016-03-07T12:48:23.720 回答
1
您可以使用下面的函数从右边替换第一次出现的单词。
def replace_from_right(text: str, original_text: str, new_text: str) -> str:
""" Replace first occurrence of original_text by new_text. """
return text[::-1].replace(original_text[::-1], new_text[::-1], 1)[::-1]
于 2019-08-02T11:19:38.540 回答
0
a = "A long string with a . in the middle ending with ."
# 如果你想找到任何字符串最后一次出现的索引,在我们的例子中,我们 #will 找到最后一次出现的索引 with
index = a.rfind("with")
# 结果将是 44,因为索引从 0 开始。
于 2019-01-11T05:23:05.877 回答
-1
天真的方法:
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:]
于 2013-01-24T07:38:13.433 回答