Tekstitöötlus
Eelmine
Järgmine

Peatükk 7. Tekstitöötlus

Moodul string

Stringi moodul sisaldab kasulikke konstante ja klasse, samuti mõningaid funktsioone, mis on kasutatavad ka stringimeetoditena. Regulaaravaldisi käsitleb re moodul.

Stringikonstandid

Selles moodulis on määratud järgmised konstandid:

ascii_letters

ascii_lowercase ja ascii_uppercase konstandid koos. Ei sõltu lokaalest.

ascii_lowercase

Väiksed tähed 'abcdefghijklmnopqrstuvwxyz'. Väärtus ei sõltu lokaalest ja ei muutu.

ascii_uppercase

Suured tähed 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'. Väärtus ei sõltu lokaalest ja ei muutu.

digits

String '0123456789'.

hexdigits

Kuueteistkümnendsüsteemi numbrid. String '0123456789abcdefABCDEF'.

letters

Allpoolkirjeldatud lowercase ja uppercase stringide summa. Väärtus sõltub lokaalest ja uuendatakse kui kutsutakse funktsioon locale.setlocale().

lowercase

String, mis sisaldab kõiki väikseid tähti. Väärtus sõltub lokaalest ja uuendatakse kui kutsutakse funktsioon locale.setlocale().

octdigits

String '01234567'.

punctuation

String, mis koosneb nendest ASCII tähtedest, mida loetakse kirjavahemärkideks "C" lokaadis.

printable

String, mis koosneb trükitavatest märkidest. Sisaldab numbreid, tähti, kirjavahemärke ja valget tühikut.

uppercase

String, mis sisaldab kõiki suuri tähti. Väärtus sõltub lokaalest ja uuendatakse kui kutsutakse funktsioon locale.setlocale().

whitespace

String, mis sisaldab kõiki valgetühiku märke. Enamasti on nendeks tühik, tabulaator, uusrida, reaalgus, lehevahetus, vertikaalne tabulaator.

Stringifunktsioonid

Stringide ja unikoodi objektidlele saab rakendada järgmisi funktsioone, mida ei saa kasutada stringimeetoditena.

capwords(s)

Lahutab argumendi sõnadeks, kasutades funktsiooni split(), teeb iga sõna suurtäheliseks kasutades funktsiooni capitalize() ja ühendab sõnad kasutades funktsiooni join(). Asendab mitu valget tühikut sõnavahega ja kaotab ära alguses ja lõpus olevad valged tühikud.

maketrans(from, to)

Tagastab teisendustabeli, mis sobib argumendiks translate() või regex.compile() jaoks, et teisendada märki from argumendist to argumenti. Peavad olema ühepikkused.

Ettevaatust

Argumentideda ei tohi kasutada stringe, mille tagastavad lowercase ja uppercase — mõnes lokaadis ei ole need ühepikkused. Selleks, et muuta suurtähti väiketähtedeks või vastupidi, kasutage vastavalt funktsioone lower() või upper().

Stringide formaatimise operatsioonid

Stringi ja unikoodi objektidel on üks operaator: % (modulo). Seda tuntakse ka stringiformaatija või interpolatsiooni operaatorina.

Kui formaat vajab ühte argumenti, siis võib väärtus olla üks mitte-korteeži objekt. Kui mitu, siis väärtused moodustavad korteeži, millel on täpselt nii palju liikmeid, kui palju kohti on määrtatud formaadtistringiga; või on väärtused mapping objetkis* (milleks võib olla näiteks dict).

Teisenduse spetsifitseerija koosneb vähemalt kahest järgnevalt spetsifitseeritud märgist, mis peavad esinema sellises järjekorras:

  1. Protsendimärk %, mis tähistab spetsifikori algust.

  2. Kujutusvõti* (mapping key) (suvand), mis koosneb sulgudes olevast tähejärjendist (näiteks (minginimi)).

  3. Teisenduslipud (suvand), mis mõjutavad mõnede teisenduste tulemust.

  4. Minimaalne välja laius (suvand). Kui spetsifitseeritud kui "*" (tärn), siis loetakse tegelik laius järgmisest väärtuste korteeži elemendist ja objekt, mida teisendatakse, tuleb pärast miinimumvälja laiust ja suvandina antud täpsust.

  5. Täpsus (suvand), märgitakse kui "." (punkt) millele järgneb täpsus. Kui spetsifitseeritud kui "*" (tärn), siis loetakse tegelik laius järgmisest väärtuste korteeži elemendist ja objekt, mida teisendatakse, tuleb pärast miinimumvälja laiust ja suvandina antud täpsust.

  6. Pikkuse modifitseerija (suvand).

  7. Teisenduse tüüp.

Kui parempoolne argument on dict* (või mingi muu kujutustüüp), siis peab stringis leiduvas formaadikirjelduses olema sulgudes kujutusvõti* sellele kujutusele*, mis järgneb kohe peale "%" märki.

>>> print '%(language)s has %(#)03d quote types.' % \
          {'language': "Python", "#": 2}
Python has 002 quote types.

Toodud näite puhul ei saa kasutada "*" spetsifikaatorit, kuna selleks on vaja järgnevaid parameetreid.

Tabel 7.1. Teisenduslipu märgid

LippTähendus
#Väärtuse teisendamisel kasutatakse "alternatiivset vormi"
0Teisendamisel täidetakse vasakule jäävad kohad nullidega.
-Teisendatud väärtus on joondatud vasakule (muudab "0" tähenduse, kui antakse mõlemad).
(tühik) Positiivse väärtuse puhul jäetakse arvu ette tühik.
+Arvu ette pannakse märk ("+" või "-"). Muudab tühiku tähenduse.

Tabel 7.2. Teisendustüübid

TeisendusTähendusMärkused
dkümnendsüsteemis märgiga täisarv 
ikümnendsüsteemis märgiga täisarv 
okaheksandsüsteemis täisarv ilma märgita(1)
uilma märgita kümnendsüsteemis arv 
xilma märgita väiketäheline kuueteistkümnendsüsteemis arv(2)
Xilma märgita suuretäheline kuueteistkümnendsüsteemis arv(2)
ekomaga arv eksponentsiaalkujul (väikesetäheline) 
Ekomaga arv eksponentsiaalkujul (suuretäheline) 
fkomaga arv 
Fkomaga arv 
g sama, mis "e" kui eksponent on suurem kui -4 või väiksem kui täpsus, vastasel juhul "f".  
Gsama, mis "E" kui eksponent on suurem kui -4 või väiksem kui täpsus, vastasel juhul "F". 
cüksik märk. Võib olla ka number. 
rString. Teisendab suvalise Pythoni objekti kasutades repr(). 
sString. Teisendab suvalise Pythoni objekti kasutades str().(3)
%Midagi ei konverteerita, kasutatakse "%" stringi. 

Märkus

  1. Alternatiivne vorm lisab nulli ("0") vasaku positsiooni ja numbrivormi vahele, kui number ei alga nulliga.

  2. Alternatiivne vorm lisab '0x' või '0X' olenevalt sellest, kas kasutatakse "x" või "X" vormingut, vasaku positsiooni ja numbrivormi vahele, kui number ei alga nulliga.

  3. Kui väärtus on unikoodi-string, on ka tulemus unikoodi string.

Eelmine
Järgmine
Esileht