Sgrìobhainnean airson modal Re airson Python 3 ann an . Re modal airson abairtean cunbhalach

Tha abairtean cunbhalach nam pàirt mòr-chòrdte de cha mhòr cànan prògramadh sam bith. Cuidichidh iad thu gu luath gus am fiosrachadh a tha a dhìth ort fhaighinn. Gu sònraichte, bidh iad air an cleachdadh nuair a tha feum air teacsa a phròiseasadh. Bidh Python a 'tighinn le modal sònraichte gu bunaiteach. re, a tha an urra ri bhith ag obair le abairtean cunbhalach.

An-diugh bruidhnidh sinn gu mionaideach mu na tha e san fharsaingeachd, mar a bhith ag obair còmhla riutha agus mar a tha am modal re cuidichidh.

Abairtean cunbhalach: ro-ràdh

Dè na cleachdaidhean a th’ aig abairtean cunbhalach? Cha mhòr a h-uile. Mar eisimpleir, seo:

  1. Iarrtasan lìn a dh’ fheumas dearbhadh teacsa. Is e eisimpleir àbhaisteach teachdaichean puist-d air-loidhne.
  2. Pròiseactan sam bith eile co-cheangailte ri teacsaichean, stòran-dàta agus mar sin air adhart.

Mus tòisich sinn a 'parsadh a' cho-chòrdadh, bu chòir dhuinn tuigse nas mionaidiche a thoirt air na prionnsabalan bunaiteach mu obrachadh an leabharlainn re agus anns an fharsaingeachd, ciod a tha math mu dheidhinn san fharsaingeachd. Bheir sinn cuideachd eisimpleirean bho fhìor chleachdadh, far an toir sinn cunntas air an dòigh anns a bheil iad gan cleachdadh. Faodaidh tu a leithid de theamplaid a chruthachadh, a tha freagarrach dhut airson measgachadh farsaing de ghnìomhachd a dhèanamh le teacsa.

Dè a th’ ann an teamplaid anns an leabharlann Re?

Leis, faodaidh tu diofar sheòrsaichean fiosrachaidh a lorg, fiosrachadh fhaighinn a fhreagras orra, gus gnìomhan eile a dhèanamh nas freagarraiche. Agus, gu dearbh, airson an dàta seo a phròiseasadh.

Mar eisimpleir, gabh an teamplaid a leanas: s+. Tha e a’ ciallachadh caractar fànais sam bith. Ma chuireas tu soidhne plus ris, tha seo a’ ciallachadh gu bheil barrachd air aon àite anns a’ phàtran. Faodaidh e eadhon caractaran tab a tha air an ainmeachadh a mhaidseadh t+.

Mus cleachd thu iad, feumaidh tu an leabharlann a thoirt a-steach Re. Às deidh sin, bidh sinn a’ cleachdadh àithne sònraichte airson an teamplaid a chuir ri chèile. Tha seo air a dhèanamh ann an dà cheum.

>>> toirt a-steach re

>>> regex = re.compile('s+')

Gu sònraichte, bidh an còd seo a 'coileanadh an obair a bhith a' cur ri chèile teamplaid a ghabhas cleachdadh. mar eisimpleir, airson àiteachan a lorg (aon no barrachd).

A’ faighinn fiosrachadh fa-leth bho shreathan eadar-dhealaichte a’ cleachdadh abairtean cunbhalach

Seach gu bheil caochladair againn anns a bheil am fiosrachadh a leanas.

>>> text = “””100 Informatics INF

213 Matamataig MAT  

156 Beurla »»»

Tha trì cùrsaichean trèanaidh ann. Tha trì pàirtean anns gach fear dhiubh - àireamh, còd agus ainm. Tha sinn a 'faicinn gu bheil an eadar-dhealachadh eadar na faclan sin eadar-dhealaichte. Dè a nì thu gus an loidhne seo a bhriseadh gu àireamhan agus faclan fa leth? Tha dà dhòigh air an amas seo a choileanadh:

  1. gairm gnìomh ath.
  2. cuir an gnìomh gnìomh sgaradh airson regex.

Seo eisimpleir de bhith a’ cleachdadh co-chòrdadh gach aon de na dòighean airson ar caochladair.

>>> re.split('s+', teacsa)  

# no

>>> regex.split(text)

Toradh: ['100', 'INF', 'Computer Science', '213', 'MAT', 'Math', '156', 'ENG', 'Beurla']

San fharsaingeachd, faodar an dà dhòigh a chleachdadh. Ach dha-rìribh tha e fada nas fhasa abairt àbhaisteach a chleachdadh an àite a bhith a’ cleachdadh a’ ghnìomh iomadh uair. ath.

Lorg maidsean le trì gnìomhan

Canaidh sinn nach fheum sinn ach àireamhan a tharraing à sreang. Dè dh'fheumar a dhèanamh airson seo?

ath-lorg()

Seo cùis cleachdaidh airson an gnìomh lorg (), a leigeas leat, còmhla ri abairtean cunbhalach, tachartasan de aon àireamh no barrachd a thoirt a-mach à caochladair teacsa.

>>> clò-bhualadh (teacsa)  

100 INF Informatics

213 Matamataig MAT  

156 ENG Beurla

>>> regex_num = re.compile('d+')  

>>> regex_num.findall(text)  

['100', '213', '156']

Còmhla ris an t-samhla d, chleachd sinn teamplaid a tha a’ comharrachadh luach àireamhach sam bith a tha suidhichte ann an caochladair no teacsa. Agus bhon a chuir sinn aon + ris an sin, tha seo a’ ciallachadh gum feum co-dhiù aon àireamh a bhith an làthair. 

Faodaidh tu cuideachd an soidhne * a chleachdadh gus sònrachadh nach eil làthaireachd figear riatanach airson maids a lorg.

Ach anns a 'chùis againn, bhon a chleachd sinn +, thug sinn a-mach le lorg () 1 no barrachd sònrachaidhean didseatach de chùrsaichean bhon teacsa. Mar sin, anns a’ chùis againn, bidh abairtean cunbhalach ag obair mar shuidheachaidhean airson a’ ghnìomh.

rannsachadh() vs ath.maids()

Mar as urrainn dhut tomhas bho ainm nan gnìomhan, bidh a’ chiad fhear a’ lorg maids san teacsa. Ceist: Dè an diofar eadar lorg? Is e an t-amas gu bheil e a 'tilleadh rud sònraichte a tha a' freagairt ris a 'phàtran, agus chan e an sreath iomlan de thoraidhean a chaidh a lorg ann an cruth liosta, mar an gnìomh roimhe.

Aig an aon àm, bidh an gnìomh ath-mheudachadh a’ dèanamh an aon rud. Chan eil ach an syntax eadar-dhealaichte. Feumar an teamplaid a chuir aig an toiseach. 

Gabhamaid eisimpleir a sheallas seo.

>>> # cruthaich caochladair le teacsa

>>> text2 = «»» INF Informatics

213 MAT Matamataig 156 ″»»  

>>> # cuir ri chèile regex agus coimhead airson pàtrain

>>> regex_num = re.compile('d+')  

>>> s = regex_num.search(text2)  

>>> print ('Ciad chlàr-amais:', s.start())  

>>> clò-bhualadh ('Clàr mu dheireadh:', s.end())  

>>> print(text2[s.start():s.end()]) 

A’ chiad chlàr: 17 

Clàr mu dheireadh: 20

213

Ma tha thu airson toradh coltach ris fhaighinn ann an dòigh eadar-dhealaichte, faodaidh tu an gnìomh a chleachdadh buidheann ().

Leabharlann Re a chur an àite pàirt de theacsa

Gus teacsa a chuir na àite, cleachd an gnìomh ath.sub(). Seach gu bheil an liosta chùrsaichean againn air atharrachadh beagan. Chì sinn gu bheil taba againn às deidh gach luach didseatach. Is e an obair againn an t-sreath seo gu lèir a chur còmhla ann an aon loidhne. Gus seo a dhèanamh, feumaidh sinn an abairt s+ a chuir na àite a dhol seachad 

B’ e an teacsa tùsail:

# cruthaich caochladair le teacsa

>>> text = “””100 INF t Informatics

213 MAT t Math  

156 Beurla »»»  

>>> clò-bhualadh (teacsa)  

100 GNIOMHARA Saidheans coimpiutair

213 MAT matamataig  

156 GH Beurla

Gus an obair a bha thu ag iarraidh a choileanadh, chleachd sinn na loidhnichean còd a leanas.

# cuir 1 an àite aon àite no barrachd

>>> regex = re.compile('s+')  

>>> print(regex.sub('', text))  

Mar thoradh air an sin, tha aon loidhne againn. 

101 Coimpiutaran COM 205 Matamataig MAT 189 ENG Beurla

A-nis beachdaich air duilgheadas eile. Chan eil sinn a’ cur aghaidh ris an obair a bhith a’ cur àiteachan. Tha e tòrr nas cudromaiche dhuinne gun tòisich ainmean cùrsa uile air loidhne ùr. Gus seo a dhèanamh, thathas a’ cleachdadh abairt eile a chuireas loidhne ùr ris an eisgeachd. Dè an seòrsa abairt a tha seo?

Leabharlann Re a’ toirt taic do fheart leithid maids àicheil. Tha e eadar-dhealaichte bhon fhear dhìreach leis gu bheil puing clisgeadh ann ron t-slais. Is e sin, ma dh'fheumas sinn an caractar loidhne ùr a sheachnadh, feumaidh sinn sgrìobhadh !n an àite n.

Gheibh sinn an còd a leanas.

# thoir air falbh a h-uile àite ach a-mhàin loidhne ùr  

>>> regex = re.compile('(?!n)s+)')  

>>> print(regex.sub('', text))  

100 INF Informatics

213 Matamataig MAT  

156 ENG Beurla

Dè a th’ ann am buidhnean abairt àbhaisteach?

Le cuideachadh bho bhuidhnean de abairtean cunbhalach, gheibh sinn na nithean a tha a dhìth ann an cruth eileamaidean fa leth, agus chan ann ann an aon loidhne. 

Osbarr feumaidh sinn àireamh a’ chùrsa, còd agus ainm fhaighinn chan ann ann an aon loidhne, ach mar eileamaidean fa leth. Gus an obair a choileanadh, feumaidh tu àireamh mhòr de loidhnichean còd neo-riatanach a sgrìobhadh. 

Gu dearbh, faodar an obair a dhèanamh nas sìmplidhe. Faodaidh tu an teamplaid a chuir ri chèile airson a h-uile inntrigeadh agus dìreach sònraich an dàta a dh’ fheumas tu fhaighinn bho na camagan.

Bidh àireamh glè bheag de loidhnichean ann. 

# cruthaich buidhnean de theamplaidean teacsa cùrsa agus thoir a-mach iad

>>> course_pattern = '([0-9]+)s*([A-ZY]{3})s*([a-zA-ZoY]{4,})'  

>>> re.findall (cùrsa_pattern, teacsa)  

[('100', 'INF', 'Computer Science'), ('213', 'MAT', 'Math'), ('156', 'ENG', 'Beurla')]

Bun-bheachd maidsidh “greedy”.

Gu h-àbhaisteach, tha abairtean cunbhalach air am prògramadh gus an ìre as motha de dhàta maidsidh a thoirt a-mach. Agus eadhon ged a tha feum agad air mòran nas lugha.

Bheir sinn sùil air sampall còd HTML far am feum sinn an taga fhaighinn.

>>> text = “Eisimpleir de shìneadh cunbhalach sanntach”  

>>> re.findall('', teacsa)  

['Eisimpleir de Cho-fhreagairt Cunbhalach Greedy']

An àite dìreach aon tag a thoirt a-mach, fhuair Python an sreang gu lèir. 'S e sin carson a tha e ris an canar sanntach.

Agus dè a nì thu gus dìreach an taga fhaighinn? Anns a 'chùis seo, feumaidh tu maidseadh leisg a chleachdadh. Gus abairt mar seo a shònrachadh, thèid comharra ceist a chur ri deireadh a’ phàtrain.

Gheibh thu an còd a leanas agus toradh an eadar-theangair.

>>> re.findall('', teacsa)  

[”, ”]

Ma tha feum air faighinn a-mhàin a 'chiad tachartas a thachair, tha an dòigh air a chleachdadh lorg ().

re.search('', text).group()  

"

An uairsin chan fhaighear ach an taga fosglaidh.

Teamplaidean abairt mòr-chòrdte

Seo clàr anns a bheil na pàtrain abairt àbhaisteach as cumanta.

Sgrìobhainnean airson modal Re airson Python 3 ann an . Re modal airson abairtean cunbhalach

Co-dhùnadh

Cha do bheachdaich sinn ach air na dòighean as bunaitiche airson obrachadh le abairtean cunbhalach. Ann an suidheachadh sam bith, tha thu air faicinn cho cudromach sa tha iad. Agus an seo chan eil e gu diofar a bheil e riatanach an teacsa gu lèir no na criomagan fa leth a pharsadh, ge bith a bheil e riatanach post a sgrùdadh air lìonra sòisealta no dàta a chruinneachadh gus a phròiseasadh nas fhaide air adhart. Tha abairtean cunbhalach nan neach-cuideachaidh earbsach anns a 'chùis seo.

Leigidh iad leat gnìomhan mar:

  1. A 'sònrachadh cruth an dàta, leithid seòladh puist-d no àireamh fòn.
  2. Faigh sreang agus roinn e ann an grunn shreathan nas lugha.
  3. Dèan diofar obrachaidhean le teacsa, leithid lorg, toirt a-mach am fiosrachadh riatanach, no cuir an àite pàirt de na caractaran.

Bidh abairtean cunbhalach cuideachd a 'toirt cothrom dhut gnìomhan neo-bheag a dhèanamh. Aig a 'chiad sealladh, chan eil e furasta an saidheans seo a mhaighstir. Ach ann an cleachdadh, tha a h-uile dad àbhaisteach, agus mar sin tha e gu leòr airson obrachadh a-mach aon uair, agus às deidh sin faodar an inneal seo a chleachdadh chan ann a-mhàin ann am Python, ach cuideachd ann an cànan prògramadh sam bith eile. Bidh eadhon Excel a’ cleachdadh abairtean cunbhalach gus giullachd dàta a dhèanamh fèin-ghluasadach. Mar sin tha e na pheacadh gun a bhith a’ cleachdadh an inneal seo.

Leave a Reply