2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Sisällysluettelo
Luku 6 Merkkijonoobjektit ja viipalointitoiminnot
6.2 Yleisesti käytetyt menetelmät merkeissä
Merkkijono: Merkkijono, joka koostuu useista merkeistä
Hahmot: Paljaalla silmällä näkyvät symbolit
Tavut: ei näy paljaalla silmällä
Kuinka python määrittelee merkkijonot:
lainausmerkit kaksoislainausmerkit kolminkertaiset lainausmerkit str()
>>> dir(s) ['capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'removeprefix', 'removesuffix', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
iso kirjain ------- Tee merkkijonon ensimmäinen kirjain isolla kirjaimella
>>> s 'this is a string' >>> s.capitalize() 'This is a string'
center(width, fillchar=' ') ------ Keskitä merkkijono annetun pituuden mukaan ja kohdista se keskelle
rjust --------- tasattu oikealle
vain ------ suuntaus vasemmalle
>>> help(s.center) Help on built-in function center: center(width, fillchar=' ', /) method of builtins.str instance Return a centered string of length width. Padding is done using the specified fill character (default is a space). >>> s.center(40) ' this is a string ' >>> s.center(40,"*") '************this is a string************' >>> s.rjust(40) ' this is a string' >>> s.ljust(40) 'this is a string ' >>> s.ljust(40,"*") 'this is a string************************' >>> s.rjust(40,"*") '************************this is a string'
count --------- laskee kuinka monta kertaa merkki esiintyy merkkijonossa
>>> s 'this is a string' >>> s.count("s") 3 >>> s.count("is") 2
endswith ------- Selvitä, loppuuko merkkijono XXX
startswith ------- Selvitä, alkaako merkkijono XXX
>>> s.endswith("g") True >>> s.endswith("ing") True >>> s.endswith("f") False >>> s.startswith("t") True >>> s.startswith("f") False
index ------ Sijainti, jossa etsitty merkki tai merkkijono esiintyy ensimmäisenä merkkijonossa. Jos sitä ei ole olemassa, annetaan poikkeus (virheraportti).
rindex ------- Hae oikealta vasemmalle, paikka, jossa etsittävä merkki tai merkkijono esiintyy ensimmäisenä merkkijonossa (vastaa merkin viimeistä esiintymistä tai merkkijonoa, joka etsii vasemmalta oikealle merkkijonossa) ), jos sitä ei ole, tee poikkeus (ilmoita virheestä)
>>> s 'this is a string' >>> s.index("s") 3 >>> s.index("is") 2 >>> s.index("f") Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: substring not found >>> s.index(" ") 4 >>> s.rindex("s") 10 >>> s.rindex("f") Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: substring not found
find ------- Etsittävän merkin tai merkkijonon ensimmäisen esiintymän sijainti merkkijonossa Jos sitä ei ole, palautetaan -1.
rfind----- Hae oikealta vasemmalle, haettavan merkin tai merkkijonon ensimmäisen esiintymän paikkaa merkkijonosta (vastaa merkin tai merkkijonon viimeistä esiintymää merkkijonossa, joka löydettiin vasemmalta oikealla ), palauttaa -1, jos sitä ei ole olemassa
>>> s 'this is a string' >>> s.find("s") 3 >>> s.find("f") -1 >>> s.rfind("f") -1 >>> s.rfind("s") 10
encode ----- menetelmä merkkijonojen muuntamiseksi tavuiksi python3:ssa, decode() -menetelmä tavujen muuntamiseksi merkkijonoiksi (menetelmä tavuina)
>>> s 'this is a string' >>> s.encode() b'this is a string' >>> d = s.encode() >>> d b'this is a string' >>> type(d) <class 'bytes'> >>> d b'this is a string' >>> d.decode() 'this is a string' >>> ss = d.decode() >>> ss 'this is a string' >>> type(ss) <class 'str'>
muoto ------ muotomerkkijono, ketjuta merkkijonot
isupper ------ Määrittää, onko merkkijonossa vain isoja kirjaimia
islower ----- ------ Selvitä, onko merkkijonossa kaikki pieniä kirjaimia
>>> s.isupper() False >>> s.islower() False
nimike ----- Selvitä, onko se otsikko
>>> s.istitle() False >>> ss = "This Is A Dog" >>> ss.istitle() True
isspace ----- Sitä ei yleensä käytetä määrittämään, onko se välilyönti.
>>> sss = " " >>> sss.isspace() True >>> ss 'This Is A Dog' >>> ss.isspace() False
isdigit ------ Selvitä, onko se luku
>>> sss = "123234344" >>> sss.isdigit() True >>> ss 'This Is A Dog' >>> ss.isdigit() False >>> sss = "1233443gggg" >>> sss.isdigit() False
isalnum ------ määrittää, onko se kirjaimia vai numeroita (aakkosnumeerinen)
>>> help(s.isalnum) Help on built-in function isalnum: isalnum() method of builtins.str instance Return True if the string is an alpha-numeric string, False otherwise. A string is alpha-numeric if all characters in the string are alpha-numeric and there is at least one character in the string. >>> sss '1233443gggg' >>> sss.isalnum() True >>> ss 'This Is A Dog' >>> ss.isalnum() False
isalpha ------ määrittää, onko se kirjain
otsikko ----- Muunna merkkijono otsikkomuotoon
>>> s 'This is a string' >>> s.istitle() False >>> s.title() 'This Is A String' >>> sss = s.title() >>> sss 'This Is A String' >>> sss.istitle() True
ylempi ------- Muunna merkkijono isoiksi kirjaimiksi
pienempi ------- Muunna merkkijono pieniksi kirjaimiksi
>>> s 'This is a string' >>> s.lower() 'this is a string' >>> s.upper() 'THIS IS A STRING'
split ----- Jaa merkkijono määritetyn symbolin mukaan ja palautusarvo on lista
>>> s 'This is a string' >>> s.split(" ") ['This', 'is', 'a', 'string'] >>> l = s.split(" ") >>> l ['This', 'is', 'a', 'string'] >>> type(l) <class 'list'> >>> l = s.split("s") >>> l ['Thi', ' i', ' a ', 'tring']
join ------ ketjuttaa iteroitavan objektin merkkijonoksi määritetyn muodon mukaisesti
>>> ls = ["A","B","c","d"] >>> type(ls) <class 'list'> >>> ss = " ".join(ls) >>> ss 'A B c d' >>> type(ss) <class 'str'> >>> ss = "*".join(ls) >>> ss 'A*B*c*d'
nauha ------- poista välit molemmilta puolilta
rstrip------ tyhjennä välit oikealla
lstrip -------- tyhjennä vasemmat välilyönnit
>>> ss = " hhhhhhh " >>> ss ' hhhhhhh ' >>> ss.strip() 'hhhhhhh' >>> ss.strip() 'hhhhhhh' >>> ss ' hhhhhhh ' >>> ss.rstrip() ' hhhhhhh' >>> ss.lstrip() 'hhhhhhh '
korvaa ("alkuperäinen merkki", "uusi merkki") ------ Korvaa vastaava merkki
>>> s 'This is a string' >>> s.replace("s","t") 'Thit it a ttring'
Slice: käytetään toistettavien objektien (säiliöiden) erottamiseen
Kielioppisäännöt:
object[start_index:end_index:step]
start_index ------- Aloitusindeksi (aloitusasento)
end_index ------ Loppuindeksi (päätepaikka), ei sisällä end_indexin arvoa
askel ---- askelkoko, voi olla positiivinen tai negatiivinen luku, positiivinen luku (vasemmalta oikealle) negatiivinen luku (oikealta vasemmalle), oletusarvo on 1
object[:] ----- 切割的是一个完整的对象 object[start_index:] ------ 从start_index开始切割到最后的位置,步长为1 object[:end_index] ------ 从最开始的位置切割到end_index处,但是不包含end_index object[start_index:end_index] ------- 从start_index开始切割到end_index处,但是不包含end_index,步长为1 object[start_index:end_index:step] ------------ 从start_index开始切割到end_index处,但是不包含end_index,步长为step
Etusulkemisen ja takaosan avaamisen välinen aika
ls = [0,1,2,3,4,5,6,7,8,9]
1. Leikkaa yksi arvo
>>> ls [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> ls[0] 0 >>> ls[-4] 6
2. Leikkaa koko esine
>>> ls[:] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> ls[::] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> ls[::-1] #-1 表示从右往左切割 所以是倒序 [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
3. aloitusindeksi ja loppuindeksi ovat molemmat positiivisia lukuja
>>> ls [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> ls[1:6] [1, 2, 3, 4, 5] >>> ls[1:6:-1] # start_index=1 end_index = 6表示的是从1切割到6的位置,但是不包含6处的值,从左往右切割,step=-1 表示从右往左 [] >>> ls[6:1] [] >>> ls[6:1:-1] [6, 5, 4, 3, 2] >>> ls[:6] [0, 1, 2, 3, 4, 5] >>> ls[:6:-1] [9, 8, 7] >>> ls[6:] [6, 7, 8, 9] >>> ls[6::-1] [6, 5, 4, 3, 2, 1, 0] >>>
4. aloitusindeksi ja loppuindeksi ovat molemmat negatiivisia lukuja
>>> ls [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> ls[-1:-6] [] >>> ls[-1:-6:-1] [9, 8, 7, 6, 5] >>> ls[-6:-1] [4, 5, 6, 7, 8] >>> ls[:-6] [0, 1, 2, 3] >>> ls[:-6:-1] [9, 8, 7, 6, 5] >>> ls[-6:] [4, 5, 6, 7, 8, 9] >>> ls[-6::-1] [4, 3, 2, 1, 0]
5. Start_index ja end_index yhdistetään positiiviseen ja negatiiviseen
>>> ls [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> ls[1:-6] [1, 2, 3] >>> ls[1:-6:-1] [] >>> ls[-1:6] [] >>> ls[-1:6:-1] [9, 8, 7]
6. Jatkuva viipalointi
>>> ls [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> ls[:8][2:5][-1:] [4] ls[:8] ----- [0,1,2,3,4,5,6,7] ls[:8][2:5] ----- [2,3,4] ls[:8][2:5][-1:] ----- [4]
7. Viipaloinnin kolme parametria voivat olla myös lausekkeita
>>> ls [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> ls[2+1:3*2:7%3] [3, 4, 5] >>> ls[3:6:1] [3, 4, 5] >>> ls[2:6:2] [2, 4]
8. Viipalointi voi myös leikata muita esineitä
>>> (1,2,3,4,5,6,7,8,9)[:3] (1, 2, 3) >>> "ABCDEFGHIJK"[::2] 'ACEGIK' >>> for i in range(1,100)[2::3][-10:]: ... print(i) ... 72 75 78 81 84 87 90 93 96 99
Haastattelu kysymykset:
1. Jos alaindeksiväli ylittyy käytettäessä siivuja datan leikkaamiseen, raportoidaanko virhe?
Virhettä ei raportoida, jos se ylittää alueen, palautetaan täydellinen objekti, jos se on epäjohdonmukainen.
2. Kuinka kääntää luettelon tulostuksen pythonissa?
silmukka käänteinen
[::-1]
list.reverse()