मैं अजगर स्ट्रिंग में उप-स्ट्रिंग की पहली घटना कैसे पा सकता हूं?


123

तो अगर मेरी स्ट्रिंग "यार एक शांत दोस्त है"।
मैं 'ड्यूड' का पहला सूचकांक ढूंढना चाहता हूं:

mystring.findfirstindex('dude') # should return 4

इसके लिए अजगर कमांड क्या है?
धन्यवाद।

जवाबों:


213

find()

>>> s = "the dude is a cool dude"
>>> s.find('dude')
4

20
-1यदि नहीं मिलता है तो यह वापस लौटता है
क्रिस्टोफ रूसो

क्या होगा अगर मैं isवाक्य से शब्द ढूंढना चाहता हूं this is a cool dude? मैंने खोज विधि की कोशिश की, लेकिन यह 5 के बजाय सूचकांक 2 लौटाता है। मैं इसे खोजने () का उपयोग कैसे करूं?
रेजिस्टर

@ रेगर: रेगेक्स और शब्द सीमा में देखें।
यांत्रिक_मीट

28

त्वरित अवलोकन: indexऔरfind

findविधि के बगल में भी है indexfindऔर indexदोनों एक ही परिणाम देते हैं: पहली घटना की स्थिति को वापस करना, लेकिन अगर कुछ नहीं मिला तो indexथोड़ी ValueErrorदेर के लिए findरिटर्न मिलेगा -1। स्पीडवाइज़, दोनों के बेंचमार्क परिणाम समान हैं।

s.find(t)    #returns: -1, or index where t starts in s
s.index(t)   #returns: Same as find, but raises ValueError if t is not in s

अतिरिक्त ज्ञान: rfindऔर rindex:

सामान्य तौर पर, खोजने के लिए और सूचकांक सबसे छोटी सूचकांक जहां पारित कर दिया-इन स्ट्रिंग शुरू होता है लौटने के लिए, और rfindऔर rindexसबसे बड़ी सूची है, जहां यह स्ट्रिंग खोज एल्गोरिदम से खोज के अधिकांश शुरू होता लौट बाएं से दाएं , तो साथ शुरू कार्यों rसंकेत मिलता है कि खोज से होता है सही छोड़ दिया है

इसलिए अगर आप जिस तत्व की खोज कर रहे हैं उसकी संभावना सूची की शुरुआत की तुलना में अंत के करीब है, rfindया rindexतेज होगी।

s.rfind(t)   #returns: Same as find, but searched right to left
s.rindex(t)  #returns: Same as index, but searches right to left

स्रोत: पायथन: विज़ुअल क्विकस्टार्ट गाइड, टोबी डोनाल्डसन


यदि स्ट्रिंग को परिभाषित किया गया है input_string = "this is a sentence"और यदि हम शब्द की पहली घटना को खोजना चाहते हैं is, तो क्या यह काम करेगा? # first occurence of word in a sentence input_string = "this is a sentence" # return the index of the word matching_word = "is" input_string.find("is")
दोपहर

1

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

def find_pos(string,word):

    for i in range(len(string) - len(word)+1):
        if string[i:i+len(word)] == word:
            return i
    return 'Not Found'

string = "the dude is a cool dude"
word = 'dude1'
print(find_pos(string,word))
# output 4

0
def find_pos(chaine,x):

    for i in range(len(chaine)):
        if chaine[i] ==x :
            return 'yes',i 
    return 'no'

6
ऐसा लगता है जैसे आपका इंडेंटेशन बंद है और आप अपने उद्धरण चिह्नों को बंद करना भूल गए हैं। अपने कोड की व्याख्या और क्यों यह समस्या को हल करेगा सहायक है; देखें कैसे जवाब दें
कैमिल

माफ करना, मैं इसे संपादित करता हूं ... मेरा कोड स्ट्रिंग में एक पत्र का पहला
रोड़ा ढूंढता है

0

पद = "यदि आप अपना सिर रख सकते हैं, जब आप के बारे में सब कुछ खो रहे हैं और आप पर दोष लगा रहे हैं, तो आप खुद पर भरोसा कर सकते हैं जब सभी पुरुष आपको संदेह करते हैं, \ n लेकिन उनके संदेह के लिए भी भत्ता बनाएं; \ n आप कर सकते हैं प्रतीक्षा करें और प्रतीक्षा करके थकें नहीं, \ n या झूठ बोला जा रहा है, झूठ का सौदा न करें, \ n नफरत हो रही है, नफरत करने का तरीका न दें, \ n और फिर भी बहुत अच्छा मत देखो, और न ही बहुत बुद्धिमानी से बात करो : "

enter code here

print(verse)
#1. What is the length of the string variable verse?
verse_length = len(verse)
print("The length of verse is: {}".format(verse_length))
#2. What is the index of the first occurrence of the word 'and' in verse?
index = verse.find("and")
print("The index of the word 'and' in verse is {}".format(index))

ढेर अतिप्रवाह में आपका स्वागत है। आप अधिक जानकारी या बेहतर विवरण दिए बिना एक पुराने और पहले से ही दिए गए प्रश्न (हरे चेक-मार्क के साथ उत्तर) का उत्तर दे रहे हैं। तो यह मूल रूप से सिर्फ स्वीकृत उत्तर की नकल करता है । एक नज़र है कि मैं एक अच्छा जवाब कैसे लिखूँ? । (और आगे के संदर्भ के लिए, लोकप्रिय प्रश्नों पर देर से डुप्लिकेट उत्तर ('सर्फिंग') की सफाई को कैसे हैंडल करें , इस पर एक नज़र डालें )।
Ivo मोरी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.