जवाबों:
यह करना चाहिए
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
पैरामीटर मेरे लिए एक त्रुटि की तरह लगता है क्योंकि अगर पैरामीटर को छोड़ दिया जाता है तो फ़ंक्शन एक त्रुटि देगा (पायथन 2.7 में कोशिश की गई)। मेरा सुझाव है कि या तो डिफ़ॉल्ट मान को हटा दें, इसे -1 (असीमित प्रतिस्थापन के लिए) पर सेट करें या इसे बेहतर बनाएं replacements=1
(जो मुझे लगता है कि इस विशेष फ़ंक्शन के लिए डिफ़ॉल्ट व्यवहार होना चाहिए जो ओपी चाहता है)। डॉक्स के अनुसार यह पैरामीटर वैकल्पिक है, लेकिन इसे दिए जाने पर एक इंट होना चाहिए।
". -".join("asd.asd.asd.".rsplit(".", 1))
। आप जो कर रहे हैं वह 1 घटना के लिए दाईं ओर से एक स्ट्रिंग विभाजन कर रहा है और प्रतिस्थापन का उपयोग करके फिर से स्ट्रिंग में शामिल हो रहा है।
मैं एक regex का उपयोग करेगा:
import re
new_list = [re.sub(r"\.(?=[^.]*$)", r". - ", s) for s in old_list]
\.(?=[^.]*$)
एक लाइनर होगा:
str=str[::-1].replace(".",".-",1)[::-1]
.replace
एक उल्टे तार पर कर रहे हैं । पास किए गए दोनों तार replace
भी उलट दिए गए। अन्यथा जब आप स्ट्रिंग को दूसरी बार उलटते हैं तो आपके द्वारा डाले गए अक्षर पीछे की तरफ होंगे। आप इसका उपयोग केवल तभी कर सकते हैं जब आप एक अक्षर को एक अक्षर से बदल रहे हों, और फिर भी मैं इसे आपके कोड में नहीं डालूंगा, किसी को इसे भविष्य में बदलना होगा और यह सोचना शुरू कर देगा कि एक शब्द sdrawkcab क्यों लिखा गया है।
आप नीचे दिए गए फ़ंक्शन का उपयोग कर सकते हैं जो सही से शब्द की पहली घटना को प्रतिस्थापित करता है।
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]
a = "A long string with a . in the middle ending 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 . -'
एक के साथ आदित्य सिहाग का जवाब rfind
:
pos = a.rfind('.')
a[:pos] + '. -' + a[pos+1:]
a
?
'. -'
आउटपुट में उलट है।
replace_right
बहुत अच्छा है)