Kuidas eemaldada tekstifaili teatud osi Pythoni abil?

Tekstist väljavõtmine on tavaline skriptimise ja programmeerimise ülesanne ning Python teeb selle lihtsaks. Selles juhendis arutame mõningaid lihtsaid viise, kuidas tekstist Python 3 programmeerimiskeelt kasutades tekstist välja võtta.

Selles juhendis kasutame Pythoni versiooni 3. Enamik süsteeme on eelnevalt Python 2.7 abil installitud. Kuigi Python 2.7 kasutatakse enamikus pärandkoodides, on Python 3 Pythoni keele praegune ja tulevik. Kui teil pole konkreetset põhjust pärand Pythoni koodi kirjutamiseks või toetamiseks, soovitame töötada Pythonis 3.

Microsoft Windowsi jaoks saab Python3 alla laadida aadressilt //www.python.org. Paigaldamisel veenduge, et mõlema valiku "Kõigile kasutajatele" ja "Lisa Python to PATH" lisamine on kontrollitud, nagu näidatud alloleval pildil.

Linuxis saate installida Pythoni 3 oma paketthalduriga. Näiteks võite Debianis või Ubuntu abil selle käsu abil installida:

 sudo apt-get update & & sudo apt-get install python3 

MacOS-i jaoks on Python 3 installerit võimalik alla laadida python.org-ist, nagu ülal kirjeldatud. Kui kasutate Homebrewi paketthaldurit, saab seda installida ka terminaliakna ( rakendusedUtiliidid ) avamisega ja selle käsu käivitamisega:

 pruulima paigaldada python3 

Pythoni käivitamine

Linuxis ja MacOSis on Python 3 tõlgi käivitamise käsk python3 . Windowsis, kui installite käivitaja, on käsk py . Selle lehe käsud kasutavad python3 ; kui te olete Windowsis, asendage kõigis käskudes python3 jaoks py .

Pythoni käivitamine ilma suvanditeta käivitab interaktiivse tõlgi. Lisainformatsiooni tõlgi kasutamise kohta vt Pythoni ülevaade: Pythoni tõlgi kasutamine. Kui sisestate tõlgi kogemata, saate selle väljuda käsuga exit () või quit () .

Pythoni käivitamine failinimega tõlgendab seda pythoni programmi. Näiteks:

 python3 program.py 

... käivitab failis program.py sisalduva programmi .

Olgu, kuidas me saame kasutada Pythonit tekstifailist väljavõtmiseks?

Andmete lugemine tekstifailist

Esiteks loeme tekstifaili. Oletame, et me töötame failiga nimega lorem.txt, mis sisaldab mõningaid ladina ridu:

 Lorem ipsum dolor sit amet, consectetur adipiscing elit.Mauris nec maximus purus. Maecenas sit amet pretium tellus. 

Quisque at dignissim lacus.

Märkus. Kõikides järgnevates näidetes töötame selles failis sisalduva tekstiga. Võite vabalt kopeerida ja kleepida ülaltoodud ladina teksti tekstifaili ja salvestada see lorem.txt-ks, nii et saate seda faili kasutada sisendina.

Pythoni programm saab lugeda tekstifaili sisseehitatud avatud funktsiooni abil. Näiteks on allpool Python 3 programm, mis avab teksti lorem.txt tekstirežiimis lugemiseks, loeb sisu stringi muutujaks nimega sisu, sulgeb faili ja seejärel prindib andmed.

 myfile = open ("lorem.txt", "rt") # avatud lorem.txt teksti sisu lugemiseks = myfile.read () # loe kogu fail stringiks myfile.close () # sulgege faili printimine (sisu) # prindi sisu 

Siin on myfile nimi, mille me anname meie failiobjektile.

Avatud () funktsiooni " rt " parameeter tähendab, et me avame selle faili r ead t ext data "

Räsimärk (" # ") tähendab, et kõik ülejäänud selle rea puhul on kommentaar ja Pythoni tõlgi ignoreerib seda.

Kui salvestate selle programmi failis nimega read.py, saate seda käitada järgmise käsuga.

 python3 read.py 

Ülalolev käsk väljastab lorem.txt'i sisu:

 Lorem ipsum dolor sit amet, consectetur adipiscing elit.Mauris nec maximus purus. Maecenas sit amet pretium tellus. 

Quisque at dignissim lacus.

"Avatud" kasutamine

Oluline on sulgeda avatud failid nii kiiresti kui võimalik: avage fail, tehke oma toiming ja sulgege see. Ära jäta seda pikaks ajaks avatuks.

Kui te töötate failidega, on hea tava kasutada avatuna ... liitsõnana. See on puhtaim viis faili avamiseks, selle kasutamiseks ja faili sulgemiseks, kõik ühes lihtsalt loetavas koodiplokis. Koodiploki lõpetamisel sulgub fail automaatselt.

Kasutades avatud ... as, saame oma programmi ümber kirjutada, et see näeks välja:

 avatud ('lorem.txt', 'rt') minufailina: # Avage lorem.txt teksti sisu lugemiseks = myfile.read () # Loe kogu fail stringiks (sisu) # Trüki string 

Märkus: Pythonis on sisenemine oluline. Pythoni programmid kasutavad joone alguses valget tühikut, et määratleda ulatust, näiteks koodi plokki. Soovitatav on kasutada nelja tühikut tühimiku taseme kohta ja kasutada vahekaartide asemel tühikuid. Järgmistes näidetes veenduge, et teie kood on sisestatud täpselt nii, nagu see siin on esitatud.

Salvesta programm read.py ja käivitage see:

 python3 read.py 

Väljund

 Lorem ipsum dolor sit amet, consectetur adipiscing elit.Mauris nec maximus purus. Maecenas sit amet pretium tellus. 

Quisque at dignissim lacus.

Tekstifailide lugemine rida-realt

Senistes näidetes oleme lugenud kogu failis korraga. Täieliku faili lugemine ei ole väikeste failidega suur asi, kuid üldiselt ei ole see suurepärane mõte. Esiteks, kui teie fail on suurem kui vaba mälu maht, tekib viga.

Peaaegu igal juhul on parem mõte lugeda tekstifaili üks rida korraga.

Pythonis on failobjekt iterator. Iterator on Pythoni objekti tüüp, mis käitub korduvalt korduvalt. Näiteks saate kasutada failisobjekti korduva toimimise jaoks, sest iga kord, kui sama toiming tehakse, saate tulemuseks teistsuguse või järgmise tulemuse.

Tekstifailide puhul kordab failobjekt korraga ühte teksti rida. Ta peab ühte tekstirida andmete "ühikuks", nii et me saame kasutada " ... in loop" avalduses, et korrata andmeid ühel real korraga:

 avatud ('lorem.txt', 'rt') kui minufail: # Avage fail lorem.txt, et lugeda teksti myline'i jaoks minu failis: # Iga rea ​​jaoks loe see stringitüübile (myline) # printige see string, korrake 

Väljund

 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris nec maximus purus. Maecenas sit amet pretium tellus. Quisque at dignissim lacus. 

Pange tähele, et pärast iga rida saame täiendava reavahetuse ("newline"). Seda seetõttu, et trükitakse kaks uut rida. Esimene neist on uus tekst meie tekstifaili iga rea ​​lõpus. Teine uus rida juhtub seetõttu, et print () lisab vaikimisi oma rea ​​lõpus mis tahes, mida olete seda printinud.

Salvestame oma tekstiridad muutujana, nimelt nimekirja muutujana, et saaksime seda lähemalt vaadata.

Tekstiandmete salvestamine loenditesse

Pythonis on nimekirjad sarnased, kuid mitte samasugused nagu C või Java. Nimekiri Python sisaldab erineva pikkusega ja erinevat tüüpi indekseeritud andmeid.

 mylines = [] # Tühjenda tühi loend nimega mylines. avatud ('lorem.txt', 'rt') kui myfile: # Avage lorem.txt tekstiandmete lugemiseks. myline'i jaoks minu failis: # Iga liini jaoks, mis on salvestatud müreenina, lisab mylines.append (myline) # selle sisu mylines. print (mylines) # Trüki nimekiri. 

Selle programmi väljund on veidi erinev. Nimekirja printimise asemel prindib see programm meie nimekirjaobjekti, mis näeb välja selline:

Väljund

 ['Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc fringilla arcu congue aastal aliquam mollis. \ T Maecenas sit amet pretium tellus. Praesent sed rhoncus eo. Duis id commodo orci. ", " Quisque at dignissim lacus. \ T 

Siin näeme loendi toores sisu. Oma toorobjektivormis kujutatakse loendit komaga eraldatud nimekirjana. Siin on iga element kujutatud stringina ja iga uusjoon on esindatud selle põgenemise märkide järjestusena, n .

Sarnaselt C- või Java-massiivile saame juurdepääsu loendi elementidele, määrates muutuja nime järel indeksnumbri sulgudes. Indeksinumbrid algavad nullist - teiste sõnadega on loendi n elemendil numbriline indeks n -1.

Märkus: kui te ei tea, miks indeksi numbrid algavad nullist ühe asemel, pole sa üksi. Arvutiteadlased on arutanud nullil põhinevate numeratsioonisüsteemide kasulikkust minevikus. 1982. aastal andis Edsger Dijkstra oma arvamuse teemal, selgitades, miks nullil põhinev numeratsioon on parim viis arvutiandmete andmete indekseerimiseks. Mälu saate ise lugeda - ta teeb kaalukaid argumente.

Me saame printida esimese rea elementidest, nimetades järjekorranumbri 0, mis on sulgudes pärast nimekirja nime:

 print (mylines [0]) 

Väljund

 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc fringilla arcu congue aasta aliquam mollis. 

Või kolmas rida, märkides indeksi numbri 2:

 print (mylines [2]) 

Väljund

 Quisque at dignissim lacus. 

Aga kui me püüame juurde pääseda indeksile, mille väärtust pole, saame vea:

 print (mylines [3]) 

Väljund

 Traceback (viimane kõne viimane): fail, rida printimisel (mylines [3]) IndexError: loendage indeks vahemikus 

Loendobjekt on iterator, nii et iga loendi elemendi printimiseks saame selle iteratsiooni abil ...

 mylines = [] # Näita tühja nimekirja avatud ('lorem.txt', 'rt') kui minu faili: # Avage lorem.txt teksti lugemiseks. rea jaoks minu failis: # Iga tekstirea jaoks lisab mylines.append (rida) # selle rea loendisse. elementide puhul menüüs: # Iga loendi elemendi puhul printige see (element) #. 

Väljund

 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris nec maximus purus. Maecenas sit amet pretium tellus. Quisque at dignissim lacus. 

Aga me saame ikka veel uusi ridasid. Meie tekstifaili iga rida lõpeb trükitud uue reaga (' n '). Peale selle lisab print () pärast iga rea printimist uue rea, kui te ei ütle teisiti.

Me võime seda vaikimisi käitumist muuta, määrates lõpp- parameetri meie prindi () kõnele:

 print (element, lõpp = '') 

Seades tühja stringi lõppu (mis on esitatud kahe eraldi jutumärgina, ilma tühimikuta), ütleme print (), et printida rea ​​lõpus mitte midagi uue rea asemel.

Meie muudetud programm näeb välja selline:

 mylines = [] # Näita tühja nimekirja avatud ('lorem.txt', 'rt') minufailina: # Ava fail lorem.txt teksti lugemiseks minu failis: # Iga tekstirea jaoks mylines.append ( rida) # lisage see rida loendisse. elementide jaoks: # Iga loendi elemendi puhul printige (element , end = '' ) # printige see ilma täiendavate ridadeta . 

Väljund

 Lorem ipsum dolor sit amet, consectetur adipiscing elit.Mauris nec maximus purus. Maecenas sit amet pretium tellus. 

Quisque at dignissim lacus.

Siin kuvatud read on tegelikult failis; nad on iga rea ​​lõpus erimärk (' n '). Me tahame neist vabaneda, nii et me ei pea meiega faili töötlemisel muretsema.

Kuidas eemaldada uued read

Uute ridade täielikuks eemaldamiseks saame neid eemaldada. Stringi eraldamiseks eemaldage üks või mitu tähemärki, tavaliselt tühikut, stringide algusest või lõpust.

Näpunäide: Seda protsessi nimetatakse mõnikord ka "kärpimiseks".

Pythoni 3 stringiobjektil on meetod, mida nimetatakse rstrip (), mis triibib sümboleid stringi paremast küljest. Inglise keel loeb vasakult paremale, nii et eemaldamine paremast küljest eemaldab tähemärki lõpust.

Kui muutuja on nimega mystring, siis saame oma parema külje ribadeks eemaldada müstring.rstripiga (tähemärgid), kus märgid on stringid, mis võivad ribadeks jääda, kui need on stringide paremal küljel. Näiteks "123abc" .rstrip ("bc") tagastab 123a .

Näpunäide. Kui esitate oma programmis stringi oma grammatilise sisuga, nimetatakse seda stringitähenduseks. Pythonis (nagu enamikus programmeerimiskeeltes) tsiteeritakse stringikeeleid alati - mõlemad pooled ühekordse (") või kahekordse (") jutumärgiga. Pythonis on ühekordsed ja kahekordsed jutumärgid samaväärsed; nii kaua, kui need sobivad stringi mõlemas otsas. See on tavapärane esindama inimloetavat stringi (nagu Hello ) kahekordsetes jutumärkides ( "Tere" ) .Kui te esindate ühte märki (nt b ), või ühe erimärgi, näiteks uue rea märgi ( n ), on tavaline, et kasutada üksikuid hinnapakkumisi ( 'b', 'n' ). Lisainformatsiooni stringi kasutamise kohta Pythonis saate lugeda stringide dokumentatsioonist Pythonis.

Aruande string .rstrip ('n') eraldab stringi paremast küljest uue rea . Järgnev versioon meie programmist eemaldab uued read, kui iga rida loetakse tekstifailist:

 mylines = [] # Tühjendage tühi loend. avatud ('lorem.txt', 'rt') kui minufail: # Avage lorem.txt teksti lugemiseks. myline'i jaoks minu failis: # Faili iga rea ​​jaoks: mylines.append (myline.rstrip ('' ')) # riba uusjoon ja lisage loendisse. elementide puhul menüüs: # Iga loendi elemendi puhul printige see (element) #. 

Tekst on nüüd salvestatud loenditesse, nii et üksikuid ridu saab kasutada indeksnumbri järgi. Uued liinid on eemaldatud, nii et me ei pea nende pärast muretsema. Me võime neid hiljem hiljem tagasi panna, kui me faili uuesti üles kirjutame ja kirjutame kettale.

Nüüd otsime konkreetse alamrubriigi jaoks loendis olevaid ridu.

Oletame, et me tahame leida iga fraasi või isegi ühe kirja. Näiteks võib-olla peame teadma, kus iga „e” on. Seda saab teha stringi leidmise () meetodi abil.

Nimekiri salvestab iga tekstirea stringina. Kõigil stringiobjektidel on meetod, leida (), mis tuvastab stringide esimese alamstruktuuri esinemise.

Kasutame otsingu () meetodit, et otsida meie tekstifaili esimesest reast e-tähte, mis on salvestatud nimekirja mylines . Mylines'i esimene element on stringi objekt, mis sisaldab tekstifaili esimest rida. Sellel stringiobjektil on leidmise () meetod.

Otsingu () sulgudes määrame parameetrid. Esimene ja ainus nõutav parameeter on otsitav string, "e" . Aruande mylines [0] .find ("e") ütleb tõlkile, et ta alustab stringi alguses ja otsib edasi, üks märk korraga, kuni ta leiab tähe "e". Kui see leitakse, lõpetab see otsingu ja tagastab indeksi numbri, kus see on. Kui see jõuab stringi lõpuni, tagastab see -1, et näidata, et midagi ei leitud.

 print (mylines [0] .find ("e")) 

Väljund

3

Tagasiväärtus "3" ütleb meile, et täht "e" on neljas märk, "e" "Lorem". (Pidage meeles, et indeks on nullil põhinev: indeks 0 on esimene märk, 1 on teine ​​jne)

Leidmise () meetodil on kaks valikulist lisaparameetrit: algusindeks ja peatusindeks, mis näitab, kus stringis otsing peaks algama ja lõppema. Näiteks, string .find ("abc", 10, 20) otsib alamrubriiki "abc", kuid ainult alates 11.-st kuni 21.-ni. Kui stopp ei ole määratud, algab otsing () indeksi algusest ja peatub stringi lõpus.

Näiteks otsib järgmine avaldus "e" sümbolites [0], alustades viiendast märgist.

 print (mylines [0] .find ("e", 4)) 

Väljund

 24 

Teisisõnu, alates viiendast märgist reas [0], asub esimene "e" indeksis 24 ("e" on "nec").

Indeksi 10 otsimise alustamiseks ja peatamiseks indeksis 30:

 print (mylines [1] .find ("e", 10, 30)) 

Väljund

 28 

(Esimene "e" "Maecenas").

Kui otsing () ei leia otsingupiirkonnas alamrubriiki, tagastab see numbri -1, mis näitab ebaõnnestumist:

 print (mylines [0] .find ("e", 25, 30)) 

Väljund

-1

Indeksite 25 ja 30 vahel ei esinenud "e" juhtumeid.

Alamstringi kõigi esinemiste leidmine

Aga mis siis, kui tahame leida iga alamstruktuuri esinemise, mitte ainult esimese, millega me kokku puutume? Me võime reastada stringi üle, alustades eelmise mängu indeksist.

Selles näites kasutame "e" tähe korduvalt leidmiseks mõnda aega . Kui esineb juhtum, nimetame me uuesti leidmist, alustades stringi uuest asukohast. Täpsemalt, viimase sündmuse asukoht ja stringide pikkus (nii et me saame viimase viimase edasi liikuda). Kui otsing tagastab -1 või algusindeks ületab stringi pikkuse, peatume.

 # Ehita mylines, nagu on näidatud eespool mylines = [] # Tühjendage tühi loend. avatud ('lorem.txt', 'rt') kui minufail: # Avage lorem.txt teksti lugemiseks. myline'i jaoks minu failis: # Faili iga rea ​​jaoks: mylines.append (myline.rstrip ('' ')) # riba uusjoon ja lisage loendisse. # Leidke ja printige kõik tähed "e" indeksi sündmused = 0 # praegune indeks prev = 0 # eelmine indeks str = mylines [0] # otsitav string (esimesed elemendid) subst = "e" # alamstruktuur otsimiseks kui indeks = len (str)) print ('n' + str); # Printige algne string e-de all 

Väljund

 eeeee Lorem ipsum dolor sit amet, consectetur adipiscing elit. ee Nunc fringilla arcu congue aastas aliquam mollis. 

Sisaldab regulaaravaldisi

Keerukate otsingute puhul peaksite kasutama tavalisi väljendeid.

Pythoni regulaaravaldiste moodulit nimetatakse re . Selle kasutamiseks oma programmis importige moodul enne selle kasutamist:

 impordi uuesti 

Re- moodul rakendab regulaaravaldisi, koostades otsingumustri musterobjektiks. Selle objekti meetodeid saab seejärel kasutada mänguoperatsioonide läbiviimiseks.

Oletame näiteks, et soovite otsida mõnda sõna oma dokumendis, mis algab tähega d ja lõpeb tähega r . Me saame seda teha tavalise väljendiga " bd w * r b ". Mida see tähendab?

märkide jadatähendus
bSõna piire sobib tühja stringiga (midagi, kaasa arvatud midagi), kuid ainult siis, kui see ilmub enne või pärast mitte-sõna iseloomu. "Wordi tähemärgid" on numbrid 0 kuni 9, väiketähti ja suurtähti või allajoon (" _ ").
dVäike täht d .
w *w tähistab mis tahes sõna märki ja * on kvantifikaator, mis tähendab "null või rohkem eelmisest märgist." Nii et w * sobib nulliga või rohkemate sõnamärkidega.
rVäike täht r .
bSõna piir.

Nii et see regulaaravaldis sobib mis tahes stringiga, mida võib kirjeldada kui "sõna piiri, siis väiketähti" d ", siis null või rohkem sõna märke, seejärel väiketähti" r ", siis sõna piiri." Stringid, mida saab sel viisil kirjeldada, hõlmavad sõnu hävitaja, dour ja arst ning lühend dr .

Selle regulaaravaldise kasutamiseks Pythoni otsinguoperatsioonides koostame selle esmalt musterobjektiks. Näiteks loob järgmine Pythoni avaldus musterobjekti nimega mustri, mida saame kasutada otsingute tegemiseks selle regulaaravaldise abil.

 pattern = re.compile (r "bd w * r b") 

Märkus: Tähtis on ülaltoodud avalduses enne stringi sisalduv täht r . See ütleb Pythonile, et tõlgendaks meie stringi toores stringina täpselt nii, nagu me seda kirjutanud oleme. Kui me ei andnud stringi eesliide r-ga, tõlgendaks Python põgenemisjärjestusi, näiteks b, muul viisil. Kui vajate Pythonit oma stringide tõlgendamiseks sõna otseses mõttes, täpsustage see toorjoontena, kinnitades selle r-ga .

Nüüd saame kasutada mustriobjekti meetodeid, nagu otsing (), et otsida kompileeritud regulaaravaldise stringi, otsides mängu. Kui see leitakse, tagastab see spetsiaalse tulemuse, mida nimetatakse mänguobjektiks. Vastasel juhul tagastab see Puudon, mis on sisseehitatud Pythoni konstant, mida kasutatakse nagu loogiline väärtus "vale".

Näide

 import re str = "Tere hommikust, arst." pat = re.compile (r "bd w * r b") # compile regex "bd w * r b" mustriobjektile, kui pat.search (str)! = Puudub: # Otsi muster. Kui see on leitud, printige ("Leitud.") 

Väljund

 Leidsin. 

Juhtumikindla otsingu tegemiseks saate kompileerimisetapil määrata spetsiaalse konstantse re.IGNORECASE :

 import re str = "Tere, DoctoR." pat = re.compile (r "bd w * r b", re.IGNORECASE) # suur- ja väiketähted vastavad, kui pat.search (str)! = puudub: print ("Leitud.") 

Väljund

 Leidsin. 

Kõike kokku panema

Nüüd me teame, kuidas avada fail, loe read reale ja leidke selle loendi ükskõik millises elemendis alamrubriik. Kasutame neid teadmisi mõnede näidisprogrammide loomiseks.

Printige kõik alamrubriiki sisaldavad read

Alltoodud programm loeb logifaili rea järgi. Kui rida sisaldab sõna "viga", lisatakse see loetellu, mida nimetatakse vigadeks . Kui ei, siis ignoreeritakse. Madalam () stringi meetod muudab kõik stringid väiketähisteks võrdlemise eesmärgil, muutes otsingu juhtumitundetu ilma algseid stringid muutmata.

Pange tähele, et otsing () meetodit kutsutakse otse madalama () meetodi tulemusele; seda nimetatakse meetodi ahelaks . Samuti pange tähele, et print () avalduses ehitame väljundstringi, ühendades mitu stringi + operaatoriga.

 vead = [] # Nimekiri, kus me salvestame tulemused. linenum = 0 subst = "error" .vähem () # Alamstring otsida. avatud ('logfile.txt', 'rt') kui myfile: liini jaoks myfile: linenum + = 1, kui line.lower () leida (subst)! = -1: # juhul, kui juhtumipõhine vaste, vead. lisage ("Rida" + str (linenum) + ":" + line.rstrip ('n')) vigade puhul: print (err) 

Väljund

 Rida 6: 28. märts 09:10:37 Viga: serveriga ei saa ühendust võtta. Ühendus keelduti. Rida 10: 28. märts 10:28:15 Kerneli viga: määratud asukoht ei ole paigaldatud. Rida 14: 28. märts 11:06:30 VIGA: usb 1-1: ei saa konfigureerida, väljuda. 

Väljavõtke kõik read, mis sisaldavad substraati, kasutades regexi

Alltoodud programm sarnaneb ülaltoodud programmiga, kuid kasutab re regulaarseid väljendeid. Vead ja rea ​​numbrid on salvestatud numbritena, nt (linenum, line). Sümbol luuakse täiendavate sulgudes sulgudes error.append () . Tüübi elemendid on sarnased nimekirjaga, sulgudes on nullil põhinev indeks. Nagu siin on konstrueeritud, on viga [0] linane ja viga [1] on viga sisaldav seotud rida.

 import re vigu = [] linenum = 0 muster = re.compile ("viga", "re.IGNORECASE") # Kompileerige juhtumiga mittetundlik regex koos avatud ('logfile.txt', 'rt') kui minufail: : linenum + = 1 if pattern.search (rida)! = Puudub: # Kui leitakse vaste vigu.vajutus ((linenum, line.rstrip ('' '))) vigade puhul: # Iterate üle loendi numbritest print ("Rida" + str (err [0]) + ":" + err [1]) 

Väljund (sama nagu eespool)

 Rida 6: 28. märts 09:10:37 Viga: serveriga ei saa ühendust võtta. Ühendus keelduti. Rida 10: 28. märts 10:28:15 Kerneli viga: määratud asukoht ei ole paigaldatud. Rida 14: 28. märts 11:06:30 VIGA: usb 1-1: ei saa konfigureerida, väljuda. 

Eemaldage kõik telefoninumbrit sisaldavad read

Alltoodud programm prindib teksti tekstifaili info.txt, mis sisaldab USA või rahvusvahelist telefoninumbrit. See saavutab selle tavalise väljendiga " (+ {{1, 2})? [.-]? D {3} [s .-]? D {4} ". See regex vastab järgmistele telefoninumbrite märgetele:

  • 123-456-7890
  • (123) 456-7890
  • 123 456 7890
  • 123, 456, 7890
  • +91 (123) 456-7890
 import re vigu = [] linenum = 0 muster = re.compile (r "(d {1, 2})? [s .-]? d {3} [s .-]? {4} "), kus on avatud ('info.txt', 'rt') kui minufail: liini minufailis: linenum + = 1 kui pattern.search (rida)! = Puudub: # Kui mustriotsing leiab sobi, vead .append ((linenum, line.rstrip ('' '))) vigade puhul: print ("Line", str (err [0]), ":" + "err [1]) 

Väljund

 Rida 3: Minu telefoninumber on 731.215.8881. Rida 7: Härra Waltersile pääseb aadressil (212) 558-3131. Rida 12: Tema esindaja, proua Kennedy, jõuab aadressile +12 (123) 456-7890 Rida 14: temaga saab ühendust võtta ka aadressil (888) 312.8403, laiendus 12. 

Otsi sõnade sõnastikku

Allolev programm otsib sõnastikku mis tahes sõnade puhul, mis algavad h-ga ja lõppevad pe-ga . Sisendi jaoks kasutab ta paljudes Unixi süsteemides sisalduvat sõnastikufaili / usr / share / dict / words .

 import re filename = "/ usr / share / dict / words" pattern = re.compile (r "bh w * pe $", re.IGNORECASE) koos avatud (failinimi, "rt") minufailina: rea jaoks myfile: if pattern.search (rida)! = Puudub: print (rida, lõpp = '') 

Väljund

 Loodan, et heliotroop loodab hornpipe horoskoopi