Etsiminen ja Mittaaminen
Kun osaat lukea merkkijonon osia, seuraava vaihe on esittää kysymyksiä sen sisällöstä: "sisältääkö se tämän?", "missä se on?", "kuinka monta kertaa?", "alkaako/päättyykö se…?".
Jäsenyys
Käytä in-operaattoria tarkistaaksesi, esiintyykö alimerkkijono missä tahansa merkkijonossa. Palauttaa totuusarvon (Boolean).
123s = "Python programming" print("gram" in s) # True print("Java" not in s) # True
Sijaintien etsiminen
find(sub)palauttaa ensimmäisen osuman aloitusindeksin, tai -1 jos ei löydy;rfind(sub)etsii oikealta ja palauttaa viimeisen osuman indeksin (tai -1);index(sub)toimii kutenfind, mutta nostaaValueError-poikkeuksen jos alimerkkijono puuttuu.
12345s = "abracadabra" print(s.find("bra")) # 1 print(s.rfind("bra")) # 8 print(s.find("xyz")) # -1 print(s.index("xyz")) # ValueError
Esiintymien laskeminen
count(sub) palauttaa kuinka monta kertaa alimerkkijono esiintyy päällekkäistymättä.
123s = "banana" print(s.count("a")) # 3 print(s.count("na")) # 2
Alku ja loppu
Merkkijonon alun tai lopun tarkistamiseen käytetään startswith- tai endswith-metodia; nämä ovat selkeämpiä ja turvallisempia kuin viipalointi, kun tarvitset vain kyllä/ei-vastauksen.
123fname = "report_final.pdf" print(fname.startswith("report")) # True print(fname.endswith(".pdf")) # True
Tapausriippumattomat tarkistukset (yksinkertainen ja käytännöllinen)
Merkkijonometodit ovat tapausriippuvaisia. Tapausriippumattomaan hakuun normalisoi molemmat osapuolet metodilla .lower() (tai .upper()).
123msg = "Hello, World!" print("hello" in msg.lower()) # True print(msg.lower().startswith("hello")) # True
Käytimme jo len()-funktiota edellisessä luvussa pituuden mittaamiseen; tässä keskitytään sisällön tarkistuksiin ja sijainteihin.
1. Mitä tämä koodi tulostaa?
2. Mikä lauseke ei aiheuta virhettä, kun osajono puuttuu?
3. Kun s = "Banana", mikä lauseke palauttaa True kirjainkoosta riippumatta tarkistettaessa etuliitettä "ba"?
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Awesome!
Completion rate improved to 5
Etsiminen ja Mittaaminen
Pyyhkäise näyttääksesi valikon
Kun osaat lukea merkkijonon osia, seuraava vaihe on esittää kysymyksiä sen sisällöstä: "sisältääkö se tämän?", "missä se on?", "kuinka monta kertaa?", "alkaako/päättyykö se…?".
Jäsenyys
Käytä in-operaattoria tarkistaaksesi, esiintyykö alimerkkijono missä tahansa merkkijonossa. Palauttaa totuusarvon (Boolean).
123s = "Python programming" print("gram" in s) # True print("Java" not in s) # True
Sijaintien etsiminen
find(sub)palauttaa ensimmäisen osuman aloitusindeksin, tai -1 jos ei löydy;rfind(sub)etsii oikealta ja palauttaa viimeisen osuman indeksin (tai -1);index(sub)toimii kutenfind, mutta nostaaValueError-poikkeuksen jos alimerkkijono puuttuu.
12345s = "abracadabra" print(s.find("bra")) # 1 print(s.rfind("bra")) # 8 print(s.find("xyz")) # -1 print(s.index("xyz")) # ValueError
Esiintymien laskeminen
count(sub) palauttaa kuinka monta kertaa alimerkkijono esiintyy päällekkäistymättä.
123s = "banana" print(s.count("a")) # 3 print(s.count("na")) # 2
Alku ja loppu
Merkkijonon alun tai lopun tarkistamiseen käytetään startswith- tai endswith-metodia; nämä ovat selkeämpiä ja turvallisempia kuin viipalointi, kun tarvitset vain kyllä/ei-vastauksen.
123fname = "report_final.pdf" print(fname.startswith("report")) # True print(fname.endswith(".pdf")) # True
Tapausriippumattomat tarkistukset (yksinkertainen ja käytännöllinen)
Merkkijonometodit ovat tapausriippuvaisia. Tapausriippumattomaan hakuun normalisoi molemmat osapuolet metodilla .lower() (tai .upper()).
123msg = "Hello, World!" print("hello" in msg.lower()) # True print(msg.lower().startswith("hello")) # True
Käytimme jo len()-funktiota edellisessä luvussa pituuden mittaamiseen; tässä keskitytään sisällön tarkistuksiin ja sijainteihin.
1. Mitä tämä koodi tulostaa?
2. Mikä lauseke ei aiheuta virhettä, kun osajono puuttuu?
3. Kun s = "Banana", mikä lauseke palauttaa True kirjainkoosta riippumatta tarkistettaessa etuliitettä "ba"?
Kiitos palautteestasi!