답변:
이것은 그것을해야한다
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. -'
". -".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 ."
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
훨씬 좋네요입니다)