Pythonis stringide otsimine: in, find(), rfind() ja regulaaravaldise meetodid

1. Sissejuhatus

Stringide töötlemise tähtsus Pythonis

Pythonis programmeerimisel on stringide töötlemine igapäevane ja põhioskuste hulka kuuluv tegevus. Kontrollida, kas string sisaldab kindlat sõna või fraasi, on vajalik paljudes olukordades nagu andmetöötlus, teksti analüüs või veebiskreipimine. Selles artiklis tutvustame nelja peamist meetodit, kuidas Pythonis kontrollida, kas string sisaldab teatud väärtust. See aitab muuta programmi tõhusamaks ja vältida vigu.

2. Meetod 1: Lihtne meetod in operaatori abil

Mis on in operaator

Kõige lihtsam viis kontrollida, kas üks string sisaldub teises, on kasutada in operaatorit. See meetod on algajatele kergesti mõistetav ja kood jääb loetav. Kui otsitav string leidub tekstis, tagastab in operaator True, vastasel juhul False.

Näide

text = "Python is a versatile language."
print("versatile" in text)  # True
print("java" in text)  # False

Ülaltoodud koodis kontrollitakse, kas string "versatile" esineb muutujas text. Kuna see on olemas, tagastatakse True. Samas "java" ei esine tekstis, mistõttu tagastatakse False.

in operaatori plussid ja miinused

Plussid

  • Kood on lühike ja intuitiivne.
  • Tulemus tagastatakse loogikaväärtusena (True või False), mida on lihtne kasutada tingimuslausetes.

Miinused

  • Ei sobi keerukamate mustrite või täpsete suur- ja väiketähtede eristamiseks.
  • Sobib ainult lihtsateks kontrollideks, kuid ei anna infot positsiooni ega keerukamate mustrite kohta.

3. Meetod 2: find() meetod indeksi leidmiseks

Mis on find() meetod

find() meetod tagastab positsiooni (indeksi), kus konkreetne alamstring esimest korda tekstis esineb. Kui leitakse, tagastatakse nullist suurem indeks; kui ei leita, siis -1. Meetod eristab suuri ja väikseid tähti.

Näide

text = "apple, orange, banana"
index = text.find("orange")
print(index)  # 7

Siin tagastatakse 7, sest sõna "orange" algab tekstis seitsmendal kohal. Kui otsida "grape", siis tulemus on -1, kuna seda ei leidu.

Rakendus: tõstutundetu otsing

Kui soovid otsida tõstutundetult, saab kasutada lower() meetodit, et muuta kogu tekst väiketähtedeks enne otsingut.

text = "Python is Great"
index = text.lower().find("great")
print(index)  # 10

find() meetodi plussid ja miinused

Plussid

  • Võimaldab leida alamstringi esimese esinemise positsiooni.
  • Lihtne kasutada.

Miinused

  • Tõstutundlik otsing, mis vajab vajadusel lisatöötlust.
  • Tagastab ainult esimese leitud esinemise.

4. Meetod 3: rfind() meetod viimase esinemise leidmiseks

Mis on rfind() meetod

rfind() otsib stringi paremalt poolt ja tagastab esimese leitud esinemise indeksi. Kui ei leita, tagastatakse -1. See töötab sarnaselt find() meetodile, kuid otsib tagantpoolt.

Näide

text = "apple, orange, apple, banana"
index = text.rfind("apple")
print(index)  # 14

Siin tagastatakse 14, kuna see on viimase sõna "apple" algusindeks.

rfind() meetodi rakendus

See on kasulik, kui vajad viimast esinemist, näiteks logifailide või suurte tekstide puhul, et leida viimane veateade või kindel märksõna.

rfind() meetodi plussid ja miinused

Plussid

  • Võimaldab tuvastada viimase esinemise.
  • Sobib suurte tekstide ja logide töötlemiseks.

Miinused

  • Ei anna kõigi esinemiste asukohti korraga.
RUNTEQ(ランテック)|超実戦型エンジニア育成スクール

5. Meetod 4: Regulaaravaldised (re.search()) keerukamaks otsinguks

Mis on regulaaravaldis

Regulaaravaldised (Regex) on võimas tööriist mustrite otsimiseks tekstidest. Pythonis saab kasutada re moodulit, et otsida keerukamaid mustreid või paindlikke osalisi vasteid.

Näide: re.search()

import re
text = "apple, orange, banana"
match = re.search(r"ora[a-z]*", text)
if match:
    print(match.group())  # orange

Siin leitakse sõna, mis algab "ora"-ga ja millele järgnevad väiketähed. Tulemus on "orange".

Rakendus: mitu mustrit korraga

match = re.search(r"d+", "apple 123 banana")
if match:
    print(match.group())  # 123

Seda saab kasutada numbrite või kindlate sümbolite otsimiseks.

Regulaaravaldise plussid ja miinused

Plussid

  • Võimaldab töödelda keerulisi mustreid ja paindlikke vasteid.
  • Sobib suurte tekstide ja andmete analüüsimiseks.

Miinused

  • Süntaks on algajatele keeruline.
  • Võib olla aeglasem suurte andmemahtude puhul.

6. Meetodite võrdlus ja kasutus

Võrdlustabel

MeetodFunktsioonPlussidMiinused
inKontrollib, kas alamstring esinebLihtne ja kiireTõstutundlik
find()Tagastab esimese vaste indeksiAnnab positsiooniAinult esimene vaste
rfind()Otsib paremaltTagastab viimase vasteAinult viimane vaste
re.search()Regulaaravaldise otsingPaindlik ja võimasKõrge õppimiskulu, aeglasem

Soovituslik kasutus

  • in lihtsateks kontrollideks.
  • find() või rfind() positsiooni leidmiseks.
  • Regulaaravaldised keerukateks mustriteks.

7. Kokkuvõte

Python pakub mitmeid viise kontrollida, kas string sisaldab teatud väärtust – alates lihtsatest kuni keerukamateni. Käesolevas artiklis vaatasime lähemalt in operaatorit, find(), rfind() ja regulaaravaldise re.search() meetodit. Igal neist on oma eelised ja piirangud.

  • Lihtsad kontrollid: in
  • Positsiooni leidmine: find() või rfind()
  • Keerukad mustrid: regulaaravaldise kasutamine

Vali õige meetod vastavalt oma kasutusjuhtumile ja tee stringide otsing tõhusamaks. Küsimuste või arvamuste korral jäta kommentaar!

RUNTEQ(ランテック)|超実戦型エンジニア育成スクール