ዶክመንቶች ለሪ ሞጁል ለ Python 3 in. ለመደበኛ መግለጫዎች ድጋሚ ሞጁል

መደበኛ አገላለጾች የማንኛውም የፕሮግራም አወጣጥ ቋንቋ በጣም ታዋቂ አካል ናቸው። የሚፈልጉትን መረጃ በፍጥነት እንዲያገኙ ያግዙዎታል. በተለይም ጽሑፍን ለማስኬድ አስፈላጊ በሚሆንበት ጊዜ ጥቅም ላይ ይውላሉ. Python በነባሪ ልዩ ሞጁል ጋር አብሮ ይመጣል። reከመደበኛ መግለጫዎች ጋር የመሥራት ኃላፊነት ያለበት.

ዛሬ በአጠቃላይ ምን እንደሆነ, ከነሱ ጋር እንዴት እንደሚሰራ እና ሞጁሉን እንዴት እንደሚሰራ በዝርዝር እንነጋገራለን re ይረዳል ፡፡

መደበኛ መግለጫዎች: መግቢያ

መደበኛ መግለጫዎች ምንድ ናቸው? ሁሉም ማለት ይቻላል. ለምሳሌ እነዚህ፡-

  1. የጽሑፍ ማረጋገጫ የሚያስፈልጋቸው የድር መተግበሪያዎች። የተለመደው ምሳሌ የመስመር ላይ ደብዳቤ ደንበኞች ነው።
  2. ከጽሁፎች፣ የውሂብ ጎታዎች እና ከመሳሰሉት ጋር የተያያዙ ሌሎች ፕሮጀክቶች።

አገባቡን መተንተን ከመጀመራችን በፊት የቤተ መፃህፍቱን አሠራር መሠረታዊ መርሆች በበለጠ ዝርዝር መረዳት አለብን re እና በአጠቃላይ ስለ እሱ በአጠቃላይ ጥሩ የሆነው. እንዲሁም የአጠቃቀም ዘዴን የምንገልጽበት ከእውነተኛ ልምምድ ምሳሌዎችን እንሰጣለን. በጽሁፍ ብዙ አይነት ስራዎችን ለመስራት ተስማሚ የሆነ እንዲህ አይነት አብነት መፍጠር ይችላሉ.

በዳግም ቤተ-መጽሐፍት ውስጥ አብነት ምንድን ነው?

በእሱ አማካኝነት ሌሎች ተግባራትን የበለጠ ተስማሚ ለማድረግ የተለያዩ ዓይነቶችን መረጃ መፈለግ ፣ ከእነሱ ጋር የሚዛመድ መረጃ ማግኘት ይችላሉ ። እና በእርግጥ, ይህን ውሂብ ለማስኬድ.

ለምሳሌ የሚከተለውን አብነት ይውሰዱ። s+. ማንኛውም የጠፈር ባህሪ ማለት ነው። በላዩ ላይ የመደመር ምልክት ካከሉ፣ ይህ ማለት ንድፉ ከአንድ በላይ ቦታን ያካትታል ማለት ነው። ከተጠሩት የትር ቁምፊዎች ጋር እንኳን ማዛመድ ይችላል። t+.

እነሱን ከመጠቀምዎ በፊት ቤተ-መጽሐፍቱን ማስመጣት ያስፈልግዎታል Re. ከዚያ በኋላ, አብነቱን ለማዘጋጀት ልዩ ትዕዛዝ እንጠቀማለን. ይህ በሁለት ደረጃዎች ይከናወናል.

>>> አስመጪ ዳግም

>>> regex = እንደገና ማሰባሰብ('s+')

በተለይም, ይህ ኮድ ጥቅም ላይ ሊውል የሚችል አብነት የማጠናቀር ስራን ያከናውናል. ለምሳሌ ቦታዎችን ለመፈለግ (አንድ ወይም ከዚያ በላይ)።

መደበኛ መግለጫዎችን በመጠቀም ከተለያዩ ሕብረቁምፊዎች የተለየ መረጃ ማግኘት

የሚከተለውን መረጃ የያዘ ተለዋዋጭ አለን እንበል።

>>> ጽሑፍ = “””100 INF ኢንፎርማቲክስ

213 MAT ሒሳብ  

156 ኢንጂ እንግሊዝኛ»»

ሶስት የስልጠና ኮርሶችን ይዟል. እያንዳንዳቸው ሦስት ክፍሎችን ያቀፉ - ቁጥር, ኮድ እና ስም. በእነዚህ ቃላት መካከል ያለው የጊዜ ክፍተት የተለየ መሆኑን እናያለን. ይህንን መስመር ወደ ተለያዩ ቁጥሮች እና ቃላት ለመስበር ምን ማድረግ አለበት? ይህንን ግብ ለማሳካት ሁለት ዘዴዎች አሉ-

  1. ተግባር ይደውሉ እንደገና ተከፋፈለ.
  2. ተግባርን ተግብር ሰነጠቀ ሪጅክስ.

የእያንዳንዱን ዘዴዎች አገባብ ለተለዋዋጭያችን የመጠቀም ምሳሌ እዚህ አለ።

>>> እንደገና መከፋፈል ('s+'፣ ጽሑፍ)  

# ወይም

>>> regex.split(ጽሑፍ)

ውፅዓት፡ ['100'፣ 'INF'፣ 'Computer Science'፣ '213'፣ 'MAT'፣ 'Math'፣ '156'፣ 'ENG'፣ 'English']

በአጠቃላይ, ሁለቱንም ዘዴዎች መጠቀም ይቻላል. ግን ተግባሩን ብዙ ጊዜ ከመጠቀም ይልቅ መደበኛ አገላለጽ መጠቀም በጣም ቀላል ነው። እንደገና ተከፋፈለ.

ከሶስት ተግባራት ጋር ተዛማጆችን መፈለግ

ከሕብረቁምፊ ውስጥ ቁጥሮችን ብቻ ማውጣት አለብን እንበል። ለዚህ ምን መደረግ አለበት?

ዳግም ፊንዳል()

ለተግባሩ የአጠቃቀም ጉዳይ እዚህ አለ። አግኝ(), እሱም ከመደበኛ አገላለጾች ጋር, የአንድ ወይም የበለጡ ቁጥሮች ክስተቶችን ከጽሑፍ ተለዋዋጭ ለማውጣት ያስችልዎታል.

>>> ማተም (ጽሑፍ)  

100 INF ኢንፎርማቲክስ

213 MAT ሒሳብ  

156 ENG እንግሊዝኛ

>>> regex_num = እንደገና ማሰባሰብ('d+')  

>>> regex_num.findall(ጽሑፍ)  

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

ከ d ምልክቱ ጋር፣ በተለዋዋጭ ወይም በጽሁፍ ውስጥ የሚገኘውን ማንኛውንም የቁጥር እሴት የሚያመለክት አብነት ተጠቀምን። እና እዚያ አንድ + ስለጨመርን፣ ይህ ማለት ቢያንስ አንድ ቁጥር መገኘት አለበት ማለት ነው። 

ግጥሚያ ለማግኘት የዲጂት መኖር እንደማያስፈልግ ለመለየት * ምልክቱን መጠቀም ይችላሉ።

በእኛ ሁኔታ ግን +ን ስለተጠቀምን ያወጣነው በ አግኝ() ከጽሑፉ 1 ወይም ከዚያ በላይ የኮርሶች ዲጂታል ስያሜዎች። ስለዚህ, በእኛ ሁኔታ, መደበኛ አገላለጾች ለተግባሩ እንደ መቼቶች ይሠራሉ.

re.search() vs ዳግም ግጥሚያ()

ከተግባሮቹ ስም እንደሚገምቱት, የመጀመሪያው በጽሑፉ ውስጥ ግጥሚያን ይፈልጋል. ጥያቄ፡ በመካከላቸው ያለው ልዩነት ምንድን ነው? አግኝ? ነጥቡ ከስርዓተ-ጥለት ጋር የሚዛመድ አንድ የተወሰነ ነገርን ይመልሳል እንጂ የተገኘውን ውጤት በሙሉ ቅደም ተከተል እንደ ቀድሞው ተግባር በዝርዝር መልክ አይደለም።

በምላሹ, የዳግም ግጥሚያው ተግባር ተመሳሳይ ነው. አገባብ ብቻ የተለየ ነው። አብነቱ መጀመሪያ ላይ መቀመጥ አለበት. 

ይህንን የሚያሳይ አንድ ምሳሌ እንውሰድ።

>>> # ከጽሑፍ ጋር ተለዋዋጭ ይፍጠሩ

>>> text2 = «»» INF ኢንፎርማቲክስ

213 ማት ሂሳብ 156""  

>>> # regex አጠናቅሩ እና ቅጦችን ይፈልጉ

>>> regex_num = እንደገና ማሰባሰብ('d+')  

>>> s = regex_num.search(text2)  

>>> ማተም ('የመጀመሪያ መረጃ ጠቋሚ:', s.start())  

>>> ማተም ('የመጨረሻ መረጃ ጠቋሚ:', s.end())  

>>> ማተም(text2[s.start():s.end()]) 

የመጀመሪያው መረጃ ጠቋሚ: 17 

የመጨረሻው መረጃ ጠቋሚ: 20

213

በተለያየ መንገድ ተመሳሳይ ውጤት ለማግኘት ከፈለጉ, ተግባሩን መጠቀም ይችላሉ ቡድን().

የጽሑፍ ክፍልን በRe ቤተ-መጽሐፍት በመተካት።

ጽሑፍን ለመተካት ተግባሩን ይጠቀሙ re.sub() የእኛ የኮርሶች ዝርዝር ትንሽ ተቀይሯል እንበል። ከእያንዳንዱ ዲጂታል እሴት በኋላ ትር እንዳለን እናያለን። የእኛ ተግባር እነዚህን ሁሉ ቅደም ተከተሎች ወደ አንድ መስመር ማዋሃድ ነው. ይህንን ለማድረግ s+ የሚለውን አገላለጽ መተካት ያስፈልገናል ለማለፍ 

ዋናው ጽሑፍ፡-

# ከጽሑፍ ጋር ተለዋዋጭ ይፍጠሩ

>>> ጽሑፍ = “””100 INF t ኢንፎርማቲክስ

213 MAT t ሒሳብ  

156 ENG t እንግሊዝኛ»»  

>>> ማተም (ጽሑፍ)  

100 መረጃ ኢንፎርሜሽን

213 ማት የሒሳብ ትምህርት  

156 አንግ እንግሊዝኛ

የተፈለገውን ክዋኔ ለማከናወን, የሚከተሉትን የኮድ መስመሮች እንጠቀማለን.

# አንድ ወይም ከዚያ በላይ ቦታዎችን በ1 መተካት

>>> regex = እንደገና ማሰባሰብ('s+')  

>>> ማተም (regex.sub(''፣ ጽሑፍ))  

በውጤቱም, አንድ መስመር አለን. 

101 COM ኮምፒተሮች 205 MAT ሒሳብ 189 ENG እንግሊዝኛ

አሁን ደግሞ ሌላ ችግር አስብበት። ቦታዎችን የማስቀመጥ ተግባር አላጋጠመንም። ሁሉም የኮርስ ስሞች በአዲስ መስመር መጀመራቸው ለእኛ በጣም አስፈላጊ ነው። ይህንን ለማድረግ, ለየት ያለ አዲስ መስመርን የሚጨምር ሌላ አገላለጽ ጥቅም ላይ ይውላል. ይህ ምን ዓይነት አገላለጽ ነው?

ቤተ መጻሕፍት Re እንደ አሉታዊ ማዛመድ ያለ ባህሪን ይደግፋል። ከመጥፋቱ በፊት የቃለ አጋኖ ነጥብ በመያዙ ከቀጥታ ይለያል። ማለትም አዲሱን መስመር ገፀ ባህሪን መዝለል ካስፈለገን ከ n ይልቅ !n መፃፍ አለብን።

የሚከተለውን ኮድ እናገኛለን.

# ከአዲስ መስመር በስተቀር ሁሉንም ቦታዎች ያስወግዱ  

>>> regex = እንደገና ማሰባሰብ('((?!n)s+)')  

>>> ማተም (regex.sub(''፣ ጽሑፍ))  

100 INF ኢንፎርማቲክስ

213 MAT ሒሳብ  

156 ENG እንግሊዝኛ

መደበኛ የንግግር ቡድኖች ምንድ ናቸው?

በመደበኛ መግለጫዎች ቡድኖች እርዳታ የሚፈለጉትን እቃዎች በተናጥል አካላት መልክ ማግኘት እንችላለን, እና በአንድ መስመር አይደለም. 

የኮርሱን ቁጥር፣ ኮድ እና ስም በአንድ መስመር ሳይሆን እንደ የተለየ አካል ማግኘት አለብን እንበል። ስራውን ለማጠናቀቅ እጅግ በጣም ብዙ አላስፈላጊ የኮድ መስመሮችን መጻፍ ያስፈልግዎታል. 

እንደ እውነቱ ከሆነ, ተግባሩ በጣም ቀላል ሊሆን ይችላል. ለሁሉም ግቤቶች አብነት ማጠናቀር እና ከቅንፍ ማግኘት የሚፈልጉትን ውሂብ ብቻ ይግለጹ።

በጣም ትንሽ ቁጥር ያላቸው መስመሮች ይኖራሉ. 

# ቡድኖችን ይፍጠሩ የጽሑፍ አብነቶችን ይፍጠሩ እና ያውጡዋቸው

>>> ኮርስ_ሥርዓት = '([0-9]+)s*([A-ZY]{3})s*([a-zA-ZoY]{4,})»  

>>> re.findall (ኮርስ_ስርዓተ-ጥለት፣ ጽሑፍ)  

[('100'፣ 'INF'፣ 'ኮምፒውተር ሳይንስ')፣ ('213'፣ 'MAT'፣ 'Math')፣ ('156'፣ 'ENG'፣ 'እንግሊዝኛ'))

የ "ስግብግብ" ተዛማጅ ጽንሰ-ሐሳብ

በመደበኛ አገላለጾች ከፍተኛውን ተዛማጅ ውሂብ ለማውጣት ፕሮግራም ተዘጋጅቷል። እና በጣም ያነሰ ቢፈልጉም.

መለያውን ለማግኘት የሚያስፈልገንን የኤችቲኤምኤል ኮድ ናሙና እንይ።

>>> ጽሁፍ = "የስግብግብነት መደበኛ አገላለጽ ማዛመድ ምሳሌ"  

>>> re.findall(''፣ ጽሑፍ)  

['የስግብግብነት መደበኛ የሐሳብ ማዛመድ ምሳሌ']

Python አንድ መለያ ብቻ ከማውጣት ይልቅ ሙሉውን ሕብረቁምፊ አግኝቷል። ለዚህም ነው ስግብግብ የሚባለው።

እና መለያውን ብቻ ለማግኘት ምን ማድረግ አለበት? በዚህ ሁኔታ, ሰነፍ ማዛመጃን መጠቀም ያስፈልግዎታል. እንደዚህ አይነት አገላለጽ ለመጥቀስ የጥያቄ ምልክት በስርዓተ-ጥለት መጨረሻ ላይ ተጨምሯል።

የሚከተለውን ኮድ እና የአስተርጓሚውን ውጤት ያገኛሉ.

>>> re.findall(''፣ ጽሑፍ)  

[”፣”]

ለመጀመሪያ ጊዜ ያጋጠመውን ክስተት ብቻ ለማግኘት ከተፈለገ ዘዴው ጥቅም ላይ ይውላል ፍለጋ ().

ድጋሚ ፍለጋ(''፣ ጽሑፍ) ቡድን()  

"

ከዚያ የመክፈቻ መለያው ብቻ ነው የሚገኘው።

ታዋቂ የአገላለጽ አብነቶች

በብዛት ጥቅም ላይ የዋሉ መደበኛ የቃላት አገላለጾችን የያዘ ሠንጠረዥ እዚህ አለ።

ዶክመንቶች ለሪ ሞጁል ለ Python 3 in. ለመደበኛ መግለጫዎች ድጋሚ ሞጁል

መደምደሚያ

ከመደበኛ መግለጫዎች ጋር ለመስራት በጣም መሠረታዊ የሆኑትን ዘዴዎች ብቻ ተመልክተናል. ያም ሆነ ይህ, ምን ያህል አስፈላጊ እንደሆኑ አይተሃል. እና እዚህ አጠቃላይ ጽሑፉን ወይም የተናጠል ቁርጥራጮቹን ፣ በማህበራዊ አውታረመረብ ላይ ያለውን ልጥፍ መተንተን ወይም በኋላ ላይ ለማስኬድ መረጃን መሰብሰብ አስፈላጊ ከሆነ ምንም ለውጥ አያመጣም። በዚህ ጉዳይ ላይ መደበኛ መግለጫዎች አስተማማኝ ረዳት ናቸው.

እንደሚከተሉት ያሉ ተግባራትን እንድትፈጽም ያስችሉሃል፡-

  1. እንደ ኢሜል አድራሻ ወይም ስልክ ቁጥር ያሉ የመረጃውን ቅርጸት በመግለጽ ላይ።
  2. ሕብረቁምፊ ማግኘት እና ወደ ብዙ ትናንሽ ሕብረቁምፊዎች መከፋፈል።
  3. እንደ መፈለግ፣ አስፈላጊውን መረጃ ማውጣት ወይም የቁምፊዎቹን ክፍል በመተካት የተለያዩ ስራዎችን በጽሁፍ ያከናውኑ።

መደበኛ አገላለጾች እንዲሁ ቀላል ያልሆኑ ስራዎችን እንዲያከናውኑ ያስችሉዎታል. በመጀመሪያ ሲታይ, ይህንን ሳይንስ መማር ቀላል አይደለም. ነገር ግን በተግባር ሁሉም ነገር ደረጃውን የጠበቀ ነው, ስለዚህ አንድ ጊዜ ለማወቅ በቂ ነው, ከዚያ በኋላ ይህ መሳሪያ በፓይዘን ውስጥ ብቻ ሳይሆን በማንኛውም ሌላ የፕሮግራም ቋንቋም መጠቀም ይቻላል. ኤክሴል እንኳ የውሂብ ሂደትን በራስ ሰር ለማድረግ መደበኛ አገላለጾችን ይጠቀማል። ስለዚህ ይህንን መሳሪያ አለመጠቀም ኃጢአት ነው።

መልስ ይስጡ