Kuinka indeksoida ja pilkkoa merkkijonoja Python 3:ssa | DigitalOcean (2023)

Johdanto

Python-merkkijonotietotyyppi on sarja, joka koostuu yhdestä tai useammasta yksittäisestä merkistä, joka voi koostua kirjaimista, numeroista, välilyönneistä tai symboleista. Koska merkkijono on sekvenssi, sitä voidaan käyttää samalla tavalla kuin muita sekvenssipohjaisia ​​tietotyyppejä indeksoimalla ja viipaloimalla.

Tämä opetusohjelma opastaa sinua pääsemään merkkijonoihin indeksoinnin kautta, leikkaamaan niitä merkkijonojen kautta ja käymään läpi joitakin laskenta- ja merkkien paikannusmenetelmiä.

Edellytykset

Sinulla pitäisi olla Python 3 asennettuna ja ohjelmointiympäristö asennettuna tietokoneellesi tai palvelimellesi. Jos sinulla ei ole ohjelmointiympäristöä määritettynä, voit katsoa asennus- ja asennusoppaista apaikallinen ohjelmointiympäristötai aohjelmointiympäristö palvelimellasisopiva käyttöjärjestelmällesi (Ubuntu, CentOS, Debian jne.)

Kuinka merkkijonot indeksoidaan

Kuinluettelon tietotyyppijossa on alkioita, jotka vastaavat indeksinumeroa, jokainen merkkijonon merkki vastaa myös indeksinumeroa alkaen indeksinumerosta 0.

merkkijonoa vartenSammy Shark!indeksijakauma on seuraava:

SammyShark!
01234567891011

Kuten näet, ensimmäinenSalkaa indeksistä 0 ja merkkijono päättyy indeksiin 11!symboli.

Huomaamme myös, että välilyöntimerkki välilläSammyjaHaivastaa myös omaa indeksinumeroaan. Tässä tapauksessa välilyöntiin liittyvä indeksinumero on 5.

Huutomerkki (!) sisältää myös indeksinumeron. Mikä tahansa muu symboli tai välimerkki, kuten*#$&.;?, on myös merkki ja se liitetään omaan indeksinumeroonsa.

Se, että jokaisella Python-merkkijonon merkillä on vastaava indeksinumero, antaa meille mahdollisuuden käyttää ja käsitellä merkkijonoja samalla tavalla kuin muiden peräkkäisten tietotyyppien kanssa.

Merkkien käyttäminen positiivisen indeksinumeron perusteella

Viittaamalla indeksinumeroihin voimme eristää yhden merkkijonon merkeistä. Teemme tämän laittamalla indeksinumerot hakasulkeisiin. Ilmoitetaan merkkijono, tulostetaan se ja kutsutaan indeksinumeroa hakasulkeissa:

Tiedot:Jos haluat seurata tämän opetusohjelman esimerkkikoodia, avaa Python-interaktiivinen kuori paikallisessa järjestelmässäsi suorittamallapython3komento. Sitten voit kopioida, liittää tai muokata esimerkkejä lisäämällä ne perään>>>kehote.

ss= "Sammy Shark!"Tulosta(ss[4])

Lähtö

y

Kun viittaamme merkkijonon tiettyyn indeksinumeroon, Python palauttaa kyseisessä paikassa olevan merkin. Kirjeestä lähtienyon merkkijonon indeksinumerossa 4ss = "Sammy Shark!", kun tulostammess[4]me vastaanotammeylähtönä.

Indeksinumeroiden avulla voimme käyttää tiettyjä merkkejä merkkijonossa.

Merkkien käyttäminen negatiivisen indeksinumeron perusteella

Jos meillä on pitkä merkkijono ja haluamme paikantaa kohteen loppua kohti, voimme myös laskea taaksepäin merkkijonon lopusta alkaen indeksinumerosta-1.

Samalle ketjulleSammy Shark!negatiivinen indeksin erittely on seuraava:

SammyShark!
-12-11-10-9-8-7-6-5-4-3-2-1

Käyttämällä negatiivisia indeksinumeroita voimme tulostaa merkinr, viittaamalla sen sijaintiin indeksissä -3, kuten näin:

Tulosta(ss[-3])

Lähtö

r

Negatiivisten indeksinumeroiden käyttäminen voi olla edullista yksittäisen merkin eristämiseksi pitkän merkkijonon lopussa.

Jousien viipalointi

Voimme myös kutsua joukon merkkejä merkkijonosta. Sano, että haluamme vain tulostaa sananHai. Voimme tehdä sen luomalla aviipale, joka on merkkijono alkuperäisessä merkkijonossa. Viipaleiden avulla voimme kutsua useita merkkiarvoja luomalla indeksinumerot, jotka erotetaan kaksoispisteellä[x:y]:

Tulosta(ss[6:11])

Lähtö

Hai

Kun rakennat siivua, kuten[6:11], ensimmäinen indeksinumero on kohta, jossa viipale alkaa (mukaan lukien), ja toinen indeksinumero on osion loppu (pois lukien), minkä vuoksi yllä olevassa esimerkissämme alueen on oltava indeksinumero, joka esiintyisi merkkijonon päättymisen jälkeen .

Kun leikkaamme merkkijonoja, luomme aalamerkkijono, joka on pohjimmiltaan toisessa merkkijonossa oleva merkkijono. Kun soitammess[6:11], kutsumme alimerkkijonoaHaijoka on merkkijonossaSammy Shark!.

Jos haluamme sisällyttää merkkijonon jommankumman pään, voimme jättää yhden numeroista poismerkkijono[n:n]syntaksi. Jos esimerkiksi haluamme tulostaa merkkijonon ensimmäisen sananss- "Sammy" - voimme tehdä sen kirjoittamalla:

Tulosta(ss[:5])

Lähtö

Sammy

Teimme tämän jättämällä pois indeksinumeron ennen kaksoispistettä viipalesyntaksissa ja sisällyttämällä vain indeksinumeron kaksoispisteen jälkeen, joka viittaa osamerkkijonon loppuun.

Jos haluat tulostaa alimerkkijonon, joka alkaa merkkijonon keskeltä ja tulostuu sen loppuun, voimme tehdä sen lisäämällä vain indeksinumeron ennen kaksoispistettä, kuten näin:

Tulosta(ss[7:])

Lähtö

hark!

Sisällyttämällä vain indeksinumeron ennen kaksoispistettä ja jättämällä toisen indeksinumeron pois syntaksista, osamerkkijono siirtyy kutsutun indeksinumeron merkistä merkkijonon loppuun.

Voit myös käyttää negatiivisia indeksinumeroita merkkijonon leikkaamiseen. Kuten kävimme läpi aiemmin, merkkijonon negatiiviset indeksiluvut alkavat -1:stä ja laskevat siitä alaspäin merkkijonon alkuun asti. Kun käytät negatiivisia indeksinumeroita, aloitamme ensin pienemmällä numerolla, kuten se esiintyy merkkijonossa aiemmin.

Käytetään kahta negatiivista indeksinumeroa merkkijonon leikkaamiseenss:

Tulosta(ss[-4:-1])

Lähtö

arkki

Alamerkkijono "ark" on painettu merkkijonosta "Sammy Shark!" koska merkki "a" esiintyy indeksin -4 kohdassa ja merkki "k" ennen -1 indeksinumeroa.

Askeleen määrittäminen merkkijonoja leikattaessa

Merkkijonojen viipalointi voi hyväksyä kolmannen parametrin kahden indeksinumeron lisäksi. Kolmas parametri määrittääaskel, joka viittaa siihen, kuinka monta merkkiä tulee siirtyä eteenpäin sen jälkeen, kun ensimmäinen merkki on haettu merkkijonosta. Toistaiseksi olemme jättäneet pois stride-parametrin, ja Python käyttää oletuksena askelta 1, joten jokainen merkki kahden indeksinumeron väliltä haetaan.

Katsotaanpa yllä olevaa esimerkkiä, joka tulostaa alimerkkijonon "Shark":

Tulosta(ss[6:11])

Lähtö

Hai

Voimme saada samat tulokset sisällyttämällä kolmannen parametrin askeleella 1:

Tulosta(ss[6:11:1])

Lähtö

Hai

Joten askel 1 ottaa jokaisen merkin viipaleen kahden indeksinumeron väliltä. Jos jätämme pois askelparametrin, Python käyttää oletusarvoa 1:llä.

Jos sen sijaan lisäämme askelta, huomaamme, että merkit ohitetaan:

Tulosta(ss[0:12:2])

Lähtö

SmySak

2:n askeleen määrittäminen Python-syntaksin viimeiseksi parametriksiss[0:12:2]ohittaa kaikki muut hahmot. Katsotaanpa korostettuja merkkejä:

Sammy Shark!

Huomaa, että välilyöntimerkki indeksinumerossa 5 ohitetaan myös askeleella 2.

Jos käytämme suurempaa numeroa askelparametriamme, meillä on huomattavasti pienempi osamerkkijono:

Tulosta(ss[0:12:4])

Lähtö

Hän

4:n askeleen määrittäminen Python-syntaksin viimeiseksi parametriksiss[0:12:4]tulostaa vain joka neljäs merkki. Katsotaanpa vielä kerran korostettuja hahmoja:

SammyShark!

Tässä esimerkissä välilyönti ohitetaan myös.

Koska tulostamme koko merkkijonon, voimme jättää kaksi indeksinumeroa pois ja pitää kaksi kaksoispistettä syntaksissa saman tuloksen saavuttamiseksi:

Tulosta(ss[::4])

Lähtö

Hän

Kahden indeksinumeron jättäminen pois ja kaksoispisteiden säilyttäminen pitää koko merkkijonon vaihteluvälillä, kun taas askeleen viimeisen parametrin lisääminen määrittää ohitettavien merkkien määrän.

Lisäksi voit ilmoittaa askeleelle negatiivisen numeerisen arvon, jonka avulla voimme tulostaa alkuperäisen merkkijonon käänteisessä järjestyksessä, jos asetamme askeleeksi -1:

Tulosta(ss[::-1])

Lähtö

!krahS ymmaS

Kaksi kaksoispistettä, joissa ei ole määritettyjä parametreja, sisältävät kaikki alkuperäisen merkkijonon merkit, askel 1 sisältää jokaisen merkin ilman ohittamista, ja tämän askeleen kieltäminen kääntää merkkien järjestyksen.

Tehdään tämä uudestaan, mutta askeleella -2:

Tulosta(ss[::-2])

Lähtö

!rh my

Tässä esimerkissäss[::-2], käsittelemme alkuperäisen merkkijonon kokonaisuutta, koska parametreihin ei sisälly indeksinumeroita, ja käännämme merkkijonon negatiivisen askeleen kautta. Lisäksi, jos askel on -2, ohitamme joka toisen käänteisen merkkijonon kirjaimen:

!krahS[välilyönti]ymmaS

Tässä esimerkissä on tulostettu välilyöntimerkki.

Määrittämällä Python-viipalesyntaksin kolmannen parametrin osoitat alkuperäisestä merkkijonosta haettavan alimerkkijonon askeleen.

Laskentamenetelmät

Kun pohdimme asiaankuuluvia indeksinumeroita, jotka vastaavat merkkijonojen sisällä olevia merkkejä, kannattaa käydä läpi joitakin menetelmiä, jotka laskevat merkkijonoja tai palauttavat indeksinumeroita. Tästä voi olla hyötyä, kun halutaan rajoittaa käyttäjän syöttämässä muodossa hyväksyttävien merkkien määrää tai merkkijonojen vertailua. Kuten muutkin peräkkäiset tietotyypit, merkkijonot voidaan laskea useilla menetelmillä.

Katsomme ensinlen()menetelmä, joka voi saada minkä tahansa tietotyypin pituuden, joka on sekvenssi, olipa se järjestetty tai järjestämätön, mukaan lukien merkkijonot, luettelot,tuples, jasanakirjoja.

Tulostetaan merkkijonon pituusss:

Tulosta(len(ss))

Lähtö

12

Merkkijonon pituus "Sammy Shark!" on 12 merkkiä pitkä, mukaan lukien välilyöntimerkki ja huutomerkki.

Muuttujan käyttämisen sijaan voimme myös välittää merkkijonon suoraan kohtaanlen()menetelmä:

Tulosta(len("Tulostetaan tämän merkkijonon pituus."))

Lähtö

38

Thelen()menetelmä laskee merkkien kokonaismäärän merkkijonossa.

Jos haluamme laskea, kuinka monta kertaa joko yksi tietty merkki tai merkkijono näkyy merkkijonossa, voimme tehdä senstr.count()menetelmä. Työskentelemme merkkijonomme kanssass = "Sammy Shark!"ja laske kuinka monta kertaa merkki "a" ilmestyy:

Tulosta(ss.Kreivi("a"))

Lähtö

2

Voimme etsiä toista hahmoa:

Tulosta(ss.Kreivi("s"))

Lähtö

0

Vaikka kirjain "S" on merkkijonossa, on tärkeää pitää mielessä, että jokainen merkki on isojen ja pienten kirjainten välinen ero. Jos haluamme etsiä kaikki merkkijonon kirjaimet kirjainkoosta riippumatta, voimme käyttäästr.lower()menetelmä muuntaa merkkijono ensin pieniksi kirjaimiksi. Voit lukea lisää tästä menetelmästä kohdasta "Johdatus Python 3:n merkkijonomenetelmiin.”

Kokeillaanstr.count()merkkijonolla:

tykkää= "Sammy tykkää uida meressä, pitää palvelimien pyörittämisestä ja hymyilemisestä."Tulosta(tykkää.Kreivi("tykkää"))

Lähtö

3

Merkkijonossatykkää, merkkijono, joka vastaa "tykkäyksiä", esiintyy 3 kertaa alkuperäisessä merkkijonossa.

Voimme myös selvittää, missä kohdassa merkki tai merkkijono esiintyy merkkijonossa. Voimme tehdä tämän kanssastr.find()-menetelmällä, ja se palauttaa merkin sijainnin indeksinumeron perusteella.

Voimme tarkistaa, missä merkkijonossa ensimmäinen "m" esiintyyss:

Tulosta(ss.löytö("m"))

Lähtö

2

Ensimmäinen merkki "m" esiintyy indeksikohdassa 2 merkkijonossa "Sammy Shark!" Voimme tarkastella merkkijonon indeksinumeroiden paikkojass edellä.

Katsotaanpa, missä merkkijonossa ensimmäinen "tykkäyksiä" esiintyytykkää:

Tulosta(tykkää.löytö("tykkää"))

Lähtö

6

Merkkisarjan ensimmäinen esiintymä "tykkää" alkaa indeksinumeron paikasta 6, jossa merkki onlsekvenssistätykkääon sijoitettu.

Entä jos haluamme nähdä, mistä toinen "tykkäyksiä" alkaa? Voimme tehdä sen välittämällä toisen parametrinstr.find()menetelmä, joka alkaa tietystä indeksinumerosta. Joten sen sijaan, että aloitamme merkkijonon alusta, aloitetaan indeksinumeron 9 jälkeen:

Tulosta(tykkää.löytö("tykkää", 9))

Lähtö

34

Tässä toisessa esimerkissä, joka alkaa indeksinumerolla 9, merkkijonon "tykkää" ensimmäinen esiintyminen alkaa indeksinumerosta 34.

Lisäksi voimme määrittää alueen lopun kolmanneksi parametriksi. Kuten viipalointi, voimme tehdä sen laskemalla taaksepäin käyttämällä negatiivista indeksinumeroa:

Tulosta(tykkää.löytö("tykkää", 40, -6))

Lähtö

64

Tämä viimeinen esimerkki etsii sekvenssin "tykkää" sijaintia indeksinumeroiden 40 ja -6 väliltä. Koska viimeinen syötetty parametri on negatiivinen luku, se lasketaan alkuperäisen merkkijonon lopusta.

Merkkijonomenetelmätlen(),str.count(), jastr.find()voidaan määrittää pituuden, merkkien tai merkkijonojen lukumäärän ja merkkien tai merkkijonojen hakemistopaikat merkkijonoissa.

Johtopäätös

Mahdollisuus kutsua tiettyjä merkkijonojen indeksinumeroita tai tiettyä merkkijonon osaa antaa meille enemmän joustavuutta työskennellessämme tämän tietotyypin kanssa. Koska merkkijonot, kuten luettelot ja monikot, ovat sekvenssipohjaisia ​​tietotyyppejä, niitä voidaan käyttää indeksoimalla ja viipaloimalla.

Voit lukea lisää aiheestamerkkijonojen muotoilujamerkkijonomenetelmätjatkaa kielten oppimista.

Top Articles
Latest Posts
Article information

Author: Geoffrey Lueilwitz

Last Updated: 07/07/2023

Views: 5905

Rating: 5 / 5 (60 voted)

Reviews: 83% of readers found this page helpful

Author information

Name: Geoffrey Lueilwitz

Birthday: 1997-03-23

Address: 74183 Thomas Course, Port Micheal, OK 55446-1529

Phone: +13408645881558

Job: Global Representative

Hobby: Sailing, Vehicle restoration, Rowing, Ghost hunting, Scrapbooking, Rugby, Board sports

Introduction: My name is Geoffrey Lueilwitz, I am a zealous, encouraging, sparkling, enchanting, graceful, faithful, nice person who loves writing and wants to share my knowledge and understanding with you.