Get started learning Python with DataCamp's free Intro to Python tutorial. Learn Data Science by completing interactive coding challenges and watching videos by expert instructors. Start Now!

This site is generously supported by DataCamp. DataCamp offers online interactive Python Tutorials for Data Science. Join 11 million other learners and get started learning Python for data science today!

Good news! You can save 25% off your Datacamp annual subscription with the code LEARNPYTHON23ALE25 - Click here to redeem your discount

Perusteet merkkijonojen käsittelystä


Strings ovat tekstin osia. Ne voidaan määritellä kaikeksi lainausmerkkien välissä olevaksi:

astring = "Hello world!"
astring2 = 'Hello world!'

Kuten näet, ensimmäinen asia, jonka opit, oli yksinkertaisen lauseen tulostaminen. Python tallensi tämän lauseen merkkijonona. Sen sijaan, että tulostaisimme heti merkkijonot, tutkimme erilaisia asioita, joita niille voi tehdä. Voit myös käyttää yksittäisiä lainausmerkkejä määrittääksesi merkkijonon. Kuitenkin kohtaat ongelmia, jos itse määritettävä arvo sisältää yksittäisiä lainausmerkkejä. Esimerkiksi, määrittääksesi merkkijonon näissä suluissa (yksittäiset lainausmerkit ovat ' '), sinun on käytettävä kaksinkertaisia lainausmerkkejä näin

astring = "Hello world!"
print("single quotes are ' '")

print(len(astring))

Se tulostaa 12, koska "Hello world!" on 12 merkkiä pitkä, mukaan lukien välimerkit ja välilyönnit.

astring = "Hello world!"
print(astring.index("o"))

Se tulostaa 4, koska kirjaimen "o" ensimmäinen esiintymä on 4 merkkiä ensimmäisestä merkistä. Huomaa, että lauseessa on itse asiassa kaksi o-kirjainta - tämä menetelmä tunnistaa vain ensimmäisen.

Mutta miksi se ei tulostanut 5? Eikö "o" ole lauseen viides merkki? Yksinkertaistaaksemme asioita, Python (ja useimmat muut ohjelmointikielet) aloittavat laskemisen 0:sta eikä 1:stä. Joten "o":n indeksi on 4.

astring = "Hello world!"
print(astring.count("l"))

Niille, jotka käyttävät hölmöjä fontteja, kyseessä on pieni l-kirjain, ei numero yksi. Tämä laskee, kuinka monta l-kirjainta merkkijonossa on. Siksi sen pitäisi tulostaa 3.

astring = "Hello world!"
print(astring[3:7])

Tämä tulostaa osan merkkijonosta, alkaen indeksistä 3 ja päättyen indeksiin 6. Mutta miksi 6 eikä 7? Jälleen, useimmat ohjelmointikielet tekevät näin - se helpottaa matematiikan tekemistä näiden hakasulkeiden sisällä.

Jos hakasulkeissa on vain yksi numero, saat yksittäisen merkin kyseisessä indeksissä. Jos jätät pois ensimmäisen numeron mutta pidät kaksoispisteen, saat viipaleen alusta numeroon, jonka jätit. Jos jätät pois toisen numeron, saat viipaleen ensimmäisestä numerosta loppuun.

Voit jopa käyttää negatiivisia lukuja hakasulkeissa. Ne ovat helppo tapa aloittaa merkkijonon lopusta sen alun sijasta. Näin -3 tarkoittaa "kolmas merkki lopusta".

astring = "Hello world!"
print(astring[3:7:2])

Tämä tulostaa merkkijonon merkkejä indeksistä 3 indeksiin 7, jättäen väliin yhden merkin. Tämä on laajennettu viipalointisyntaksi. Yleinen muoto on [alku:loppu:askel].

astring = "Hello world!"
print(astring[3:7])
print(astring[3:7:1])

Huomaa, että molemmat tuottavat saman tulosteen.

C-kielessä ei ole mitään strrev-funktion kaltaista merkkijonon kääntämiseksi. Kuitenkin yllä mainitun tyyppisellä viipalointisyntaksilla voit helposti kääntää merkkijonon näin

astring = "Hello world!"
print(astring[::-1])

Tämä

astring = "Hello world!"
print(astring.upper())
print(astring.lower())

Nämä tekevät uuden merkkijonon, jossa kaikki kirjaimet muunnetaan vastaavasti isoiksi ja pieniksi.

astring = "Hello world!"
print(astring.startswith("Hello"))
print(astring.endswith("asdfasdfasdf"))

Näitä käytetään määrittämään, alkaako merkkijono jollakin tai päättyykö se johonkin. Ensimmäinen tulostaa True, sillä merkkijono alkaa sanalla "Hello". Toinen tulostaa False, sillä merkkijono ei todellakaan pääty "asdfasdfasdf":iin.

astring = "Hello world!"
afewwords = astring.split(" ")

Tämä jakaa merkkijonon joukkoon merkkijonoja, jotka on ryhmitelty listaan. Koska tämä esimerkki jakautuu välilyönnin kohdalta, listan ensimmäinen osa on "Hello" ja toinen on "world!".

Exercise

Yritä korjata koodi tulostamaan oikea tieto muuttamalla merkkijonoa.

s = "Hey there! what should this string be?" # Length should be 20 print("Length of s = %d" % len(s)) # First occurrence of "a" should be at index 8 print("The first occurrence of the letter a = %d" % s.index("a")) # Number of a's should be 2 print("a occurs %d times" % s.count("a")) # Slicing the string into bits print("The first five characters are '%s'" % s[:5]) # Start to 5 print("The next five characters are '%s'" % s[5:10]) # 5 to 10 print("The thirteenth character is '%s'" % s[12]) # Just number 12 print("The characters with odd index are '%s'" %s[1::2]) #(0-based indexing) print("The last five characters are '%s'" % s[-5:]) # 5th-from-last to end # Convert everything to uppercase print("String in uppercase: %s" % s.upper()) # Convert everything to lowercase print("String in lowercase: %s" % s.lower()) # Check how a string starts if s.startswith("Str"): print("String starts with 'Str'. Good!") # Check how a string ends if s.endswith("ome!"): print("String ends with 'ome!'. Good!") # Split the string into three separate strings, # each containing only a word print("Split the words of the string: %s" % s.split(" ")) s = "Strings are awesome!" # Length should be 20 print("Length of s = %d" % len(s)) # First occurrence of "a" should be at index 8 print("The first occurrence of the letter a = %d" % s.index("a")) # Number of a's should be 2 print("a occurs %d times" % s.count("a")) # Slicing the string into bits print("The first five characters are '%s'" % s[:5]) # Start to 5 print("The next five characters are '%s'" % s[5:10]) # 5 to 10 print("The thirteenth character is '%s'" % s[12]) # Just number 12 print("The characters with odd index are '%s'" %s[1::2]) #(0-based indexing) print("The last five characters are '%s'" % s[-5:]) # 5th-from-last to end # Convert everything to uppercase print("String in uppercase: %s" % s.upper()) # Convert everything to lowercase print("String in lowercase: %s" % s.lower()) # Check how a string starts if s.startswith("Str"): print("String starts with 'Str'. Good!") # Check how a string ends if s.endswith("ome!"): print("String ends with 'ome!'. Good!") # Split the string into three separate strings, # each containing only a word print("Split the words of the string: %s" % s.split(" ")) test_object("s", incorrect_msg="Make sure you change the string assigned to `s` to match the exercise instructions.") success_msg("Great work!")

This site is generously supported by DataCamp. DataCamp offers online interactive Python Tutorials for Data Science. Join over a million other learners and get started learning Python for data science today!

Previous Tutorial Next Tutorial Take the Test
Copyright © learnpython.org. Read our Terms of Use and Privacy Policy