क्या Python में एक स्ट्रिंग को घटाने का कोई तरीका है?




string (7)

स्ट्रिंग के अंत तक तीसरे वर्ण से नई स्ट्रिंग प्राप्त करने के लिए, पायथन में एक स्ट्रिंग को प्रतिस्थापित करने का कोई तरीका है?

शायद myString[2:end] ?

यदि दूसरे भाग को छोड़कर 'अंत तक' का अर्थ है, यदि आप पहले भाग को छोड़ देते हैं, तो क्या यह शुरुआत से शुरू होता है?

https://code.i-harness.com


स्ट्रिंग के अंत तक तीसरे वर्ण से नई स्ट्रिंग प्राप्त करने के लिए, पायथन में एक स्ट्रिंग को प्रतिस्थापित करने का कोई तरीका है?

शायद myString[2:end] ?

हां, यह वास्तव में काम करता है अगर आप असाइन सिंगलटन को नाम, end , असाइन, या bind करते हैं, None :

>>> end = None
>>> myString = '1234567890'
>>> myString[2:end]
'34567890'

स्लाइस नोटेशन में 3 महत्वपूर्ण तर्क हैं:

  • प्रारंभ
  • रुकें
  • कदम

दिए जाने पर उनके डिफ़ॉल्ट None - लेकिन हम उन्हें स्पष्ट रूप से पारित कर सकते हैं:

>>> stop = step = None
>>> start = 2
>>> myString[start:stop:step]
'34567890'

यदि दूसरे भाग को छोड़कर 'अंत तक' का अर्थ है, यदि आप पहले भाग को छोड़ देते हैं, तो क्या यह शुरुआत से शुरू होता है?

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

>>> start = None
>>> stop = 2
>>> myString[start:stop:step]
'12'

ध्यान दें कि हम स्लाइस में शुरूआत शामिल करते हैं, लेकिन हम केवल उस तक जाते हैं, जिसमें शामिल हैं, रोकें।

जब चरण None , डिफ़ॉल्ट रूप से स्लाइस चरण के लिए 1 का उपयोग करता है। यदि आप एक नकारात्मक पूर्णांक के साथ कदम रखते हैं, तो पाइथन अंत से लेकर शुरुआत तक जाने के लिए पर्याप्त स्मार्ट है।

>>> myString[::-1]
'0987654321'

मैं स्लाइस नोटेशन प्रश्न की व्याख्या करने के अपने जवाब में बड़ी जानकारी में स्लाइस नोटेशन की व्याख्या करता हूं।


"अंत" को छोड़कर आप इसे वहां मिला है। इसे स्लाइस नोटेशन कहा जाता है। आपका उदाहरण पढ़ना चाहिए।

new_sub_string = myString[2:]

यदि आप दूसरा पैरा छोड़ देते हैं तो यह निश्चित रूप से स्ट्रिंग का अंत होता है।


एक उदाहरण यहां गायब प्रतीत होता है: पूर्ण (उथला) प्रतिलिपि।

>>> x = "Hello World!"
>>> x
'Hello World!'
>>> x[:]
'Hello World!'
>>> x==x[:]
True
>>> 

अनुक्रम प्रकारों की एक प्रति बनाने के लिए यह एक सामान्य मुहावरे है (आंतरिक तारों की नहीं)। [:] शालो एक सूची की प्रतिलिपि बनाते हैं, python-list-slice-used-for-no-obvious-reason


बस पूर्णता के लिए किसी और ने इसका उल्लेख नहीं किया है। एक सरणी टुकड़ा के लिए तीसरा पैरामीटर एक कदम है। तो एक स्ट्रिंग को उलटना उतना सरल है जितना:

some_string[::-1]

या वैकल्पिक वर्णों का चयन होगा:

"H-e-l-l-o- -W-o-r-l-d"[::2] # outputs "Hello World"

स्ट्रिंग के माध्यम से आगे और पीछे की ओर कदम रखने की क्षमता प्रारंभ या अंत से टुकड़ा सरणी करने में सक्षम होने के साथ स्थिरता बनाए रखती है।


शायद मुझे यह याद आया, लेकिन मुझे इस पृष्ठ पर मूल प्रश्न (ओं) पर पूरा उत्तर नहीं मिला क्योंकि चरों पर और चर्चा नहीं की गई है। तो मुझे खोज पर जाना पड़ा।

चूंकि मुझे अभी तक टिप्पणी करने की अनुमति नहीं है, इसलिए मुझे अपना निष्कर्ष यहां जोड़ने दें। मुझे यकीन है कि इस पृष्ठ तक पहुंचने पर मैं इसमें दिलचस्पी रखने वाला अकेला नहीं था:

 >>>myString = 'Hello World'
 >>>end = 5

 >>>myString[2:end]
 'llo'

यदि आप पहला भाग छोड़ देते हैं, तो आपको मिलता है

 >>>myString[:end]
 'Hello' 

और यदि आपने छोड़ा: बीच में भी आपको सबसे सरल सबस्ट्रिंग मिल गया, जो 5 वां चरित्र होगा (0 से शुरू होने वाली गिनती, इसलिए यह इस मामले में खाली है):

 >>>myString[end]
 ' '

सबस्ट्र () सामान्य रूप से (यानी PHP, पर्ल) इस तरह से काम करता है:

s = Substr(s, beginning, LENGTH)

तो पैरामीटर शुरू हो रहे हैं और LENGTH

लेकिन पायथन का व्यवहार अलग है, यह शुरुआत की उम्मीद है और एक अंत (!) के बाद। शुरुआती लोगों द्वारा स्पॉट करना मुश्किल है। तो Substr (एस, शुरुआत, LENGTH) के लिए सही प्रतिस्थापन है

s = s[ beginning : beginning + LENGTH]

>>> x = "Hello World!"
>>> x[2:]
'llo World!'
>>> x[:2]
'He'
>>> x[:-2]
'Hello Worl'
>>> x[-2:]
'd!'
>>> x[2:-2]
'llo Worl'

पायथन इस अवधारणा को "स्लाइसिंग" कहते हैं और यह सिर्फ तारों से अधिक काम करता है। एक व्यापक परिचय के लिए here एक नज़र डालें।





string