কীভাবে নির্ধারণ করবেন যে একটি স্ট্রিং আলাদা স্ট্রিংয়ে রয়েছে


107

আমার একটি উপ-স্ট্রিং রয়েছে:

substring = "please help me out"

আমার আরও একটি স্ট্রিং রয়েছে:

string = "please help me out so that I could solve this"

পাইথন ব্যবহারের substringএকটি উপসেট কিনা তা আমি কীভাবে খুঁজে stringপাব?

উত্তর:


169

সঙ্গে in: substring in string:

>>> substring = "please help me out"
>>> string = "please help me out so that I could solve this"
>>> substring in string
True

10
অজস্র, অজগর খুব শক্তিশালী, আমি মনে করি এটি করার জন্য এটি একটি ফাংশন প্রয়োজন, তবে এটি একটি বিল্ড-ইন ওও
উইন্ডসাউন্ড

আমি আসলে পাইথন শেখার পরে জেএস শিখছিলাম, এর জন্য আপনাকে অন্য বিবৃতি এবং অন্যান্য জিনিসগুলি যুক্ত করতে হবে। সুতরাং, আমি কেবলমাত্র পাইথনে এটি কীভাবে হয়েছিল তা স্মরণ করিয়ে দিতে চেয়েছিলাম, এই উত্তরটি আমাকে নিজের কাছে 'অবশ্যই' বলেছে, আমি বলতে চাই পাইথনের এ জাতীয় জিনিসগুলি এতটাই ক্ষুদ্র, আপনি কখনই তাদের তেমন চিন্তা করেন না! : পি
গেমস ব্রেনিয়াক

@ গেমস ব্রেইনিয়াক আসলে, জেএসে একই কাজ করার জন্য এটি এখানেstring.indexOf(substring) != -1 আরও রয়েছে
লাসাগানা অ্যান্ড্রয়েড

একবার আপনি খুঁজে পেয়েছেন, হ্যা স্ট্রিং স্ট্রিংয়ের মধ্যে উপস্থিত রয়েছে, আপনি স্ট্রিংটি কোন অবস্থানে পাবেন কীভাবে খুঁজে পাবেন এবং স্ট্রিংগুলি একাধিকবার স্ট্রিংয়ে থাকলে কী ঘটে?
yoshiserry

@yoshiserry আপনি অবস্থান চান substringমধ্যে string, তাহলে আপনি ইয়ো ব্যবহার চান string.index
মারকোস

21
foo = "blahblahblah"
bar = "somethingblahblahblahmeep"
if foo in bar:
    # do something

(যাইহোক, কোনও ভেরিয়েবলের নাম না দেওয়ার চেষ্টা করুন string, যেহেতু একই নামে একটি পাইথন স্ট্যান্ডার্ড লাইব্রেরি রয়েছে You আপনি যদি কোনও বড় প্রকল্পে এটি করেন তবে আপনি লোকজনকে বিভ্রান্ত করতে পারেন, সুতরাং এর মতো সংঘর্ষ এড়ানো ভাল অভ্যাস)


কেবল বিভ্রান্তই নয়, বিন্দুটির পরে সমস্ত রেফারিং স্ট্রিংও ভেঙে দেয়।
rplnt

13

আপনি যদি সত্য / মিথ্যা চেয়েও বেশি কিছু খুঁজছেন, আপনি পুনরায় মডিউলটি ব্যবহার করার জন্য সবচেয়ে উপযুক্ত হবেন যেমন:

import re
search="please help me out"
fullstring="please help me out so that I could solve this"
s = re.search(search,fullstring)
print(s.group())

s.group() "দয়া করে আমাকে সাহায্য করুন" স্ট্রিংটি ফিরিয়ে দেবে।


1
নিয়মিত অভিব্যক্তি অনুসন্ধান সম্পর্কে ভাল পরামর্শ।
র্যান্ডল কুক

একটি হালকা নোটে। আপনি যদি নিয়মিত অভিব্যক্তি দিয়ে কিছু সমাধান করার চেষ্টা করছেন তবে আপনি দুটি সমস্যার সমাধান করার চেষ্টা করছেন।
হাসান ইকবাল

10

ভেবেছি আমি প্রযুক্তিগত সাক্ষাত্কারের জন্য কীভাবে এটি করতে চাইছেন সে ক্ষেত্রে আমি এটি যুক্ত করব, যেখানে তারা চায় না যে আপনি পাইথনের অন্তর্নির্মিত ফাংশনটি ব্যবহার করতে পারেন inবা findযা ভয়াবহ, তবে ঘটে:

string = "Samantha"
word = "man"

def find_sub_string(word, string):
  len_word = len(word)  #returns 3

  for i in range(len(string)-1):
    if string[i: i + len_word] == word:
  return True

  else:
    return False

2
দুর্দান্ত উদাহরণ, তবে আপনার পরিচয় ভুল। এবং জিনিসগুলিকে গতি বাড়ানোর জন্য আমি if len(substring) > len(string) return Falseলুপের সীমাটিও ভাল করে পরীক্ষা range(len(string)-len(substring))করব কারণ আপনি স্ট্রিংয়ের শেষ দুটি অক্ষরে একটি তিন অক্ষরের শব্দ খুঁজে পাবেন না। (কয়েকটি পুনরাবৃত্তি সংরক্ষণ করে)।
AnyOneElse

9

লোকেরা উল্লেখ করেছে string.find(), string.index()এবং string.indexOf()মন্তব্যে, এবং আমি তাদের এখানে সংক্ষিপ্ত করছি ( পাইথন ডকুমেন্টেশন অনুসারে ):

প্রথমত কোনও string.indexOf()পদ্ধতি নেই। ডেভিলঝো পোস্ট করা লিঙ্কটি দেখায় এটি একটি জাভাস্ক্রিপ্ট ফাংশন।

দ্বিতীয় string.find()এবং string.index()প্রকৃতপক্ষে একটি স্ট্রিংয়ের সূচক ফেরত দেয়। পার্থক্য হ'ল কীভাবে তারা স্ট্রিংগুলি হ্যান্ডেল করে না পরিস্থিতিটি পাওয়া যায়: string.find()ফেরত -1যখন string.index()একটি উত্থাপন ValueError


5

আপনি () পদ্ধতিটিও চেষ্টা করতে পারেন। এটি নির্ধারণ করে যে স্ট্রিং স্ট্রিংয়ের স্ট্রিংয়ে ঘটে, বা স্ট্রিংয়ের একটি স্ট্রিংগুলিতে ঘটে।

str1 = "please help me out so that I could solve this"
str2 = "please help me out"

if (str1.find(str2)>=0):
  print("True")
else:
  print ("False")


1
def find_substring():
    s = 'bobobnnnnbobmmmbosssbob'
    cnt = 0
    for i in range(len(s)):
        if s[i:i+3] == 'bob':
            cnt += 1
    print 'bob found: ' + str(cnt)
    return cnt

def main():
    print(find_substring())

main()

প্রদত্ত স্ট্রিংয়ে 'বোব' সাবস্ট্রিং সন্ধান করুন।
অ্যাভিনা কে

0

এই পদ্ধতিটিও ব্যবহার করতে পারেন

if substring in string:
    print(string + '\n Yes located at:'.format(string.find(substring)))

0

এখানে চিত্র বর্ণনা লিখুন

সন্ধান () ব্যবহার করার পরিবর্তে সহজ উপায়গুলির একটি হ'ল উপরের মতো 'ইন' ব্যবহার।

যদি 'স্ট্রিং' স্ট্রিং-এ উপস্থিত থাকে তবে যদি অংশটি কার্যকর হয় অন্যথায় অংশটি কার্যকর হয়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.