पायथन में एक निश्चित स्थिति में स्ट्रिंग जोड़ें


157

क्या पायथन में कोई फ़ंक्शन है जो मैं एक स्ट्रिंग की एक निश्चित स्थिति में एक मूल्य डालने के लिए उपयोग कर सकता हूं?

कुछ इस तरह:

"3655879ACB6"फिर स्थिति 4 "-"में बनने के लिए जोड़ें"3655-879ACB6"

जवाबों:


272

नहीं। पायथन स्ट्रिंग्स अपरिवर्तनीय हैं।

>>> s='355879ACB6'
>>> s[4:4] = '-'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment

हालाँकि, सम्मिलित वर्ण में एक नया स्ट्रिंग बनाना संभव है:

>>> s[:4] + '-' + s[4:]
'3558-79ACB6'

9
इसे जोड़कर, आप दाईं ओर से स्थिति प्राप्त करने के लिए नकारात्मक सूचकांकों का उपयोग कर सकते हैं, जैसेs[:-4]
रूबेन एल।

नए प्रारूप स्ट्रिंग पैरलेंस का उपयोग करना: '{0} - {1}'। प्रारूप (s [: 4], s [4:])
srock

60

यह बहुत आसान लगता है:

>>> hash = "355879ACB6"
>>> hash = hash[:4] + '-' + hash[4:]
>>> print hash
3558-79ACB6

हालाँकि, अगर आपको कोई फ़ंक्शन पसंद है, तो इस तरह करें:

def insert_dash(string, index):
    return string[:index] + '-' + string[index:]

print insert_dash("355879ACB6", 5)

26

जैसा कि स्ट्रिंग्स अपरिवर्तनीय हैं ऐसा करने का एक और तरीका है कि स्ट्रिंग को एक सूची में बदल दिया जाए, जिसे बाद में बिना किसी स्लाइसिंग ट्रिकरी के अनुक्रमित और संशोधित किया जा सकता है। हालाँकि, सूची को वापस स्ट्रिंग में लाने के लिए आपको .join()खाली स्ट्रिंग का उपयोग करना होगा ।

>>> hash = '355879ACB6'
>>> hashlist = list(hash)
>>> hashlist.insert(4, '-')
>>> ''.join(hashlist)
'3558-79ACB6'

मुझे यकीन नहीं है कि यह प्रदर्शन के रूप में कहाँ तक तुलना करता है, लेकिन मुझे लगता है कि यह अन्य समाधानों की तुलना में आंखों पर आसान है। ;-)


7

इसे पूरा करने के लिए सरल कार्य:

def insert_str(string, str_to_insert, index):
    return string[:index] + str_to_insert + string[index:]

5

मैंने पायथन में एक निश्चित स्थिति में एक स्ट्रिंग जोड़ने के लिए एक बहुत ही उपयोगी तरीका बनाया है :

def insertChar(mystring, position, chartoinsert ):
    longi = len(mystring)
    mystring   =  mystring[:position] + chartoinsert + mystring[position:] 
    return mystring  

उदाहरण के लिए:

a = "Jorgesys was here!"

def insertChar(mystring, position, chartoinsert ):
    longi = len(mystring)
    mystring   =  mystring[:position] + chartoinsert + mystring[position:] 
    return mystring   

#Inserting some characters with a defined position:    
print(insertChar(a,0, '-'))    
print(insertChar(a,9, '@'))    
print(insertChar(a,14, '%'))   

हमारे पास आउटपुट के रूप में होगा:

-Jorgesys was here!
Jorgesys @was here!
Jorgesys was h%ere!

8
आप स्ट्रिंग थो की लंबाई की गणना क्यों करते हैं?
Yytsi

2
हो सकता है कि वह जाँच करना चाहता था कि सूचकांक स्ट्रिंग की लंबाई से कम है ... और फिर भूल गया।
sce

पायथन पारंपरिक रूप से फ़ंक्शन नामों के लिए अंडरस्कोर केस का उपयोग करता है, न कि ऊंट मामले का।
माइकल बेट्स

2

मुझे लगता है कि उपरोक्त उत्तर ठीक हैं, लेकिन मैं समझाता हूं कि उनके लिए कुछ अप्रत्याशित-लेकिन-अच्छे दुष्प्रभाव हैं ...

def insert(string_s, insert_s, pos_i=0):
    return string_s[:pos_i] + insert_s + string_s[pos_i:]

यदि इंडेक्स पॉस_आई बहुत छोटा (बहुत नकारात्मक) है, तो इंसर्ट स्ट्रिंग प्रीपेड हो जाती है। यदि बहुत लंबा है, तो सम्मिलित स्ट्रिंग संलग्न हो जाती है। यदि pos_i, -len (string_s) और + len (string_s) - 1 के बीच है, तो सम्मिलित स्ट्रिंग सही स्थान पर प्रविष्ट हो जाती है।


0

पायथन 3.6+ एफ-स्ट्रिंग का उपयोग कर:

mys = '1362511338314'
f"{mys[:10]}_{mys[10:]}"

देता है

'1362511338_314'

-3

यदि आप कई आवेषण चाहते हैं

from rope.base.codeanalyze import ChangeCollector

c = ChangeCollector(code)
c.add_change(5, 5, '<span style="background-color:#339999;">')
c.add_change(10, 10, '</span>')
rend_code = c.get_changed()

यह मेरे लिए स्पष्ट नहीं है कि आप जिस लाइब्रेरी को आयात कर रहे हैं वह कहां से आ रही है, या आउटपुट क्या होगा।
22'19
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.