ฉันมีสตริงย่อย:
substring = "please help me out"
ฉันมีสตริงอื่น:
string = "please help me out so that I could solve this"
ฉันจะทราบได้อย่างไรว่าsubstring
เป็นส่วนย่อยของการstring
ใช้ Python
ฉันมีสตริงย่อย:
substring = "please help me out"
ฉันมีสตริงอื่น:
string = "please help me out so that I could solve this"
ฉันจะทราบได้อย่างไรว่าsubstring
เป็นส่วนย่อยของการstring
ใช้ Python
คำตอบ:
กับin
: substring in string
:
>>> substring = "please help me out"
>>> string = "please help me out so that I could solve this"
>>> substring in string
True
string.indexOf(substring) != -1
มากขึ้นที่นี่
foo = "blahblahblah"
bar = "somethingblahblahblahmeep"
if foo in bar:
# do something
(อย่างไรก็ตาม - พยายามอย่าตั้งชื่อตัวแปรstring
เนื่องจากมีไลบรารีมาตรฐาน Python ที่มีชื่อเดียวกันคุณอาจทำให้ผู้อื่นสับสนหากคุณทำเช่นนั้นในโครงการขนาดใหญ่ดังนั้นการหลีกเลี่ยงการชนกันแบบนั้นจึงเป็นนิสัยที่ดีที่จะเข้าไป)
หากคุณกำลังมองหามากกว่า True / False คุณเหมาะที่สุดที่จะใช้ re module เช่น:
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()
จะส่งคืนสตริง "โปรดช่วยฉันด้วย"
คิดว่าฉันจะเพิ่มสิ่งนี้ในกรณีที่คุณกำลังดูวิธีการทำสิ่งนี้สำหรับการสัมภาษณ์ทางเทคนิคที่พวกเขาไม่ต้องการให้คุณใช้ฟังก์ชันในตัวของ Python 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
if len(substring) > len(string) return False
ช่วงลูปด้วยควรจะดีกว่าrange(len(string)-len(substring))
เพราะคุณจะไม่พบคำสามตัวในสองตัวอักษรสุดท้ายของสตริง (บันทึกการทำซ้ำเล็กน้อย)
คนที่กล่าวถึงstring.find()
, string.index()
และstring.indexOf()
ในความคิดเห็นและผมสรุปได้ที่นี่ (ตามเอกสาร Python ):
ก่อนอื่นไม่มีstring.indexOf()
วิธีการ ลิงก์ที่โพสต์โดย Deviljho แสดงให้เห็นว่านี่เป็นฟังก์ชัน JavaScript
ประการที่สองstring.find()
และstring.index()
คืนค่าดัชนีของสตริงย่อย ข้อแตกต่างเพียงอย่างเดียวคือวิธีจัดการกับสถานการณ์ที่ไม่พบสตริงย่อย: string.find()
ส่งกลับ-1
ในขณะที่string.index()
เพิ่มValueError
ไฟล์.
คุณยังสามารถลองค้นหา () วิธีการ กำหนดว่าสตริง str เกิดขึ้นในสตริงหรือในสตริงย่อยของสตริง
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")
In [7]: substring = "please help me out"
In [8]: string = "please help me out so that I could solve this"
In [9]: substring in string
Out[9]: True
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()
ยังสามารถใช้วิธีนี้
if substring in string:
print(string + '\n Yes located at:'.format(string.find(substring)))
แทนที่จะใช้ find () วิธีง่ายๆวิธีหนึ่งคือการใช้ 'in' ดังที่กล่าวมา
หาก 'สตริงย่อย' อยู่ใน 'str' ถ้าส่วนหนึ่งจะดำเนินการอย่างอื่นส่วนอื่นจะดำเนินการ