පයිතන් 3 සඳහා රී මොඩියුලය සඳහා ලේඛනගත කිරීම. නිත්‍ය ප්‍රකාශන සඳහා නැවත මොඩියුලය

සාමාන්‍ය ප්‍රකාශන ඕනෑම ක්‍රමලේඛන භාෂාවක ඉතා ජනප්‍රිය අංගයකි. ඔබට අවශ්‍ය තොරතුරු ඉක්මනින් ලබා ගැනීමට ඔවුන් ඔබට උපකාර කරයි. විශේෂයෙන්, පෙළ සැකසීමට අවශ්ය විට ඒවා භාවිතා වේ. පයිතන් පෙරනිමියෙන් විශේෂ මොඩියුලයක් සමඟ පැමිණේ. re, නිත්‍ය ප්‍රකාශන සමඟ වැඩ කිරීම සඳහා වගකිව යුතු ය.

අද අපි එය සාමාන්යයෙන් කුමක්ද, ඔවුන් සමඟ වැඩ කරන්නේ කෙසේද සහ මොඩියුලය ගැන විස්තරාත්මකව කතා කරමු re උදව් කරනු ඇත.

නිත්‍ය ප්‍රකාශන: හැඳින්වීමක්

නිත්‍ය ප්‍රකාශනවල භාවිතයන් මොනවාද? සියල්ලම පාහේ. උදාහරණයක් ලෙස, මේවා:

  1. පෙළ වලංගුකරණය අවශ්‍ය වෙබ් යෙදුම්. සාමාන්‍ය උදාහරණයක් වන්නේ මාර්ගගත තැපැල් සේවාදායකයන් ය.
  2. පෙළ, දත්ත සමුදාය සහ යනාදිය සම්බන්ධ වෙනත් ඕනෑම ව්‍යාපෘති.

අපි සින්ටැක්ස් විග්‍රහ කිරීමට පෙර, පුස්තකාලයේ ක්‍රියාකාරිත්වයේ මූලික මූලධර්ම වඩාත් විස්තරාත්මකව තේරුම් ගත යුතුය. re සහ පොදුවේ, ඒ ගැන පොදුවේ හොඳ කුමක්ද. අපි ඔවුන්ගේ භාවිතයේ යාන්ත්‍රණය විස්තර කරන සැබෑ භාවිතයෙන් උදාහරණ ද ලබා දෙන්නෙමු. ඔබට එවැනි අච්චුවක් නිර්මාණය කළ හැකිය, ඔබට පෙළ සමඟ විවිධ මෙහෙයුම් සිදු කිරීමට සුදුසුය.

Re library එකේ Template එකක් කියන්නේ මොකක්ද?

එය සමඟ, ඔබට වෙනත් කාර්යයන් වඩාත් අනුවර්තනය කිරීම සඳහා විවිධ වර්ගවල තොරතුරු සෙවිය හැකිය, ඒවාට අනුරූප තොරතුරු ලබා ගත හැකිය. සහ, ඇත්ත වශයෙන්ම, මෙම දත්ත සැකසීමට.

උදාහරණයක් ලෙස, පහත සැකිල්ල ගන්න: s+. එය ඕනෑම අභ්යවකාශ චරිතයක් අදහස් කරයි. ඔබ එයට ප්ලස් ලකුණක් එකතු කරන්නේ නම්, මෙයින් අදහස් කරන්නේ රටාවට එක් අවකාශයකට වඩා ඇතුළත් වන බවයි. එය සමඟ හඳුන්වන ටැබ් අක්ෂරවලට පවා ගැලපේ t+.

ඒවා භාවිතා කිරීමට පෙර, ඔබ පුස්තකාලය ආනයනය කළ යුතුය Re. ඊට පසු, අපි අච්චුව සම්පාදනය කිරීමට විශේෂ විධානයක් භාවිතා කරමු. මෙය පියවර දෙකකින් සිදු කෙරේ.

>>> නැවත ආනයනය කරන්න

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

විශේෂයෙන්, මෙම කේතය භාවිතා කළ හැකි අච්චුවක් සම්පාදනය කිරීමේ මෙහෙයුම සිදු කරයි. උදාහරණයක් ලෙස, හිස්තැන් සෙවීමට (එකක් හෝ කිහිපයක්).

සාමාන්‍ය ප්‍රකාශන භාවිතයෙන් විවිධ තන්තු වලින් වෙනම තොරතුරු ලබා ගැනීම

පහත තොරතුරු අඩංගු විචල්‍යයක් අප සතුව ඇතැයි සිතමු.

>>> පෙළ = """100 INF තොරතුරු

213 MAT ගණිතය  

156 ENG ඉංග්‍රීසි »»»

එය පුහුණු පාඨමාලා තුනක් අඩංගු වේ. ඒවායින් එක් එක් කොටස් තුනකින් සමන්විත වේ - අංකය, කේතය සහ නම. මෙම වචන අතර පරතරය වෙනස් බව අපට පෙනේ. මෙම රේඛාව වෙනම අංක සහ වචන වලට කැඩීමට කුමක් කළ යුතුද? මෙම ඉලක්කය සපුරා ගැනීම සඳහා ක්රම දෙකක් තිබේ:

  1. කාර්යයක් අමතන්න නැවත බෙදීම.
  2. කාර්යය යොදන්න බෙදුණු සදහා regex.

අපගේ විචල්‍යය සඳහා එක් එක් ක්‍රමයේ වාක්‍ය ඛණ්ඩය භාවිතා කිරීමේ උදාහරණයක් මෙන්න.

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

# හෝ

>>> regex.split(text)

ප්‍රතිදානය: ['100', 'INF', 'පරිගණක විද්‍යාව', '213', 'MAT', 'ගණිත', '156', 'ENG', 'ඉංග්‍රීසි']

පොදුවේ ගත් කල, ක්රම දෙකම භාවිතා කළ හැකිය. නමුත් ශ්‍රිතය කිහිප වතාවක් භාවිතා කිරීම වෙනුවට සාමාන්‍ය ප්‍රකාශනයක් භාවිතා කිරීම ඇත්තෙන්ම පහසුය. නැවත බෙදීම.

කාර්යයන් තුනක් සමඟ ගැලපීම් සොයා ගැනීම

අපි හිතමු අපිට string එකකින් ඉලක්කම් විතරක් extract කරන්න ඕන කියලා. මේ සඳහා කළ යුත්තේ කුමක්ද?

re.findall()

මෙහි කාර්යය සඳහා භාවිත අවස්ථාවකි findall(), නිත්‍ය ප්‍රකාශන සමඟින්, පෙළ විචල්‍යයකින් සංඛ්‍යා එකක් හෝ වැඩි ගණනක සිදුවීම් උකහා ගැනීමට ඔබට ඉඩ සලසයි.

>>> මුද්‍රණය (පෙළ)  

100 INF තොරතුරු

213 MAT ගණිතය  

156 ENG ඉංග්රීසි

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

>>> regex_num.findall(text)  

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

d සංකේතය සමඟින්, අපි විචල්‍යයක හෝ පෙළක පිහිටා ඇති ඕනෑම සංඛ්‍යාත්මක අගයක් නිරපේක්ෂ වශයෙන් දක්වන අච්චුවක් භාවිතා කළෙමු. අපි එහි + එකක් එකතු කළ නිසා, මෙයින් අදහස් කරන්නේ අවම වශයෙන් එක් අංකයක්වත් තිබිය යුතු බවයි. 

ගැලපීමක් සොයා ගැනීමට ඉලක්කමක් තිබීම අවශ්‍ය නොවන බව සඳහන් කිරීමට ඔබට * ලකුණ භාවිතා කළ හැක.

නමුත් අපගේ නඩුවේදී, අපි + භාවිතා කළ බැවින්, අපි උපුටා ගත්තෙමු findall() පාඨයෙන් පාඨමාලා වල ඩිජිටල් තනතුරු 1ක් හෝ වැඩි ගණනක්. මේ අනුව, අපගේ නඩුවේදී, නිත්ය ප්රකාශනයන් ශ්රිතය සඳහා සැකසුම් ලෙස ක්රියා කරයි.

re.search() vs නැවත තරගය()

ඔබට ශ්‍රිතවල නමෙන් අනුමාන කළ හැකි පරිදි, පළමුවැන්න පෙළෙහි ගැළපීමක් සඳහා සෙවුම් කරයි. ප්‍රශ්නය: අතර වෙනස කුමක්ද? සොයාගැනීම? කාරණය වන්නේ එය රටාවට ගැලපෙන නිශ්චිත වස්තුවක් ආපසු ලබා දෙන අතර, පෙර ශ්‍රිතය මෙන් ලැයිස්තුවක් ආකාරයෙන් සොයාගත් ප්‍රතිඵලවල සම්පූර්ණ අනුපිළිවෙල නොවේ.

අනෙක් අතට, re.match ශ්‍රිතය එයම කරයි. සින්ටැක්ස් පමණක් වෙනස් වේ. අච්චුව ආරම්භයේදීම තැබිය යුතුය. 

මෙය විදහා දක්වන උදාහරණයක් ගනිමු.

>>> # පෙළ සමඟ විචල්‍යයක් සාදන්න

>>> text2 = «»»INF තොරතුරු

213 MAT ගණිතය 156″»»  

>>> # regex සම්පාදනය කර රටා සොයන්න

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

>>> s = regex_num.search(text2)  

>>> මුද්‍රණය ('පළමු දර්ශකය: ', s.start())  

>>> මුද්‍රණය ('අවසන් දර්ශකය: ', s.end())  

>>> මුද්‍රණය (text2[s.start():s.end()]) 

පළමු දර්ශකය: 17 

අවසාන දර්ශකය: 20

213

ඔබට වෙනත් ආකාරයකින් සමාන ප්රතිඵලයක් ලබා ගැනීමට අවශ්ය නම්, ඔබට කාර්යය භාවිතා කළ හැකිය සමූහය().

Re library සමඟ පෙළෙහි කොටසක් ප්‍රතිස්ථාපනය කිරීම

පෙළ ප්‍රතිස්ථාපනය කිරීමට, ශ්‍රිතය භාවිතා කරන්න re.sub(). අපේ පාඨමාලා ලැයිස්තුව ටිකක් වෙනස් වෙලා කියලා හිතමු. සෑම ඩිජිටල් අගයකටම පසුව අපට ටැබ් එකක් ඇති බව අපට පෙනේ. අපගේ කාර්යය වන්නේ මෙම සියලු අනුපිළිවෙල එක පේළියකට ඒකාබද්ධ කිරීමයි. මෙය සිදු කිරීම සඳහා, අපි s+ ප්‍රකාශනය ප්‍රතිස්ථාපනය කළ යුතුය සමත් විය යුතුය 

මුල් පාඨය වූයේ:

# පෙළ සමඟ විචල්‍යයක් සාදන්න

>>> පෙළ = """100 INF t තොරතුරු

213 MAT t ගණිතය  

156 ENG t ඉංග්‍රීසි »»»  

>>> මුද්‍රණය (පෙළ)  

100 තොරතුරු පරිගණක විද්‍යාව

213 MAT ගණිතය  

156 ENG ඉංග්රීසි

අපේක්ෂිත මෙහෙයුම සිදු කිරීම සඳහා, අපි පහත කේත රේඛා භාවිතා කළෙමු.

# හිස් එකක් හෝ වැඩි ගණනක් 1 සමඟ ප්‍රතිස්ථාපනය කරන්න

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

>>> මුද්‍රණය (regex.sub(' ', පෙළ))  

එහි ප්රතිඵලයක් වශයෙන් අපට එක් පේළියක් ඇත. 

101 COM පරිගණක 205 MAT ගණිතය 189 ENG ඉංග්‍රීසි

දැන් තවත් ගැටලුවක් සලකා බලන්න. අපි අවකාශ තැබීමේ කාර්යයට මුහුණ දී නැත. සියලුම පාඨමාලා නම් නව රේඛාවකින් ආරම්භ වීම අපට වඩා වැදගත් වේ. මෙය සිදු කිරීම සඳහා, ව්යතිරේකයට නව රේඛාවක් එකතු කරන තවත් ප්රකාශනයක් භාවිතා කරයි. මෙය කුමන ආකාරයේ ප්‍රකාශනයක්ද?

පුස්තකාලය Re සෘණ ගැලපීම වැනි විශේෂාංගයකට සහය දක්වයි. එය සෘජු එකට වඩා වෙනස් වන්නේ එහි slashට පෙර විශ්මයජනක ලක්ෂ්‍යයක් අඩංගු වන බැවිනි. එනම්, අපට නව රේඛා අක්ෂරය මඟ හැරීමට අවශ්‍ය නම්, අපි n වෙනුවට !n ලිවිය යුතුය.

අපට පහත කේතය ලැබේ.

# නව රේඛාව හැර සියලු හිස් ඉවත් කරන්න  

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

>>> මුද්‍රණය (regex.sub(' ', පෙළ))  

100 INF තොරතුරු

213 MAT ගණිතය  

156 ENG ඉංග්රීසි

නිත්‍ය ප්‍රකාශන කණ්ඩායම් මොනවාද?

නිත්‍ය ප්‍රකාශන කණ්ඩායම් ආධාරයෙන්, අපට අවශ්‍ය වස්තූන් වෙනම මූලද්‍රව්‍ය ආකාරයෙන් ලබා ගත හැකි අතර එක් පේළියකින් නොවේ. 

අපි පාඨමාලා අංකය, කේතය සහ නම එක් පේළියකින් නොව වෙනම මූලද්රව්ය ලෙස ලබා ගත යුතු යැයි සිතමු. කාර්යය සම්පූර්ණ කිරීම සඳහා, ඔබට අනවශ්‍ය කේත රේඛා විශාල ප්‍රමාණයක් ලිවීමට අවශ්‍ය වනු ඇත. 

ඇත්ත වශයෙන්ම, කාර්යය බෙහෙවින් සරල කළ හැකිය. ඔබට සියලුම ඇතුළත් කිරීම් සඳහා අච්චුව සම්පාදනය කළ හැකි අතර වරහන් වලින් ඔබට ලබා ගත යුතු දත්ත සඳහන් කරන්න.

ඉතා කුඩා පේළි ගණනක් වනු ඇත. 

# පාඨමාලා පෙළ සැකිලි කණ්ඩායම් සාදා ඒවා උපුටා ගන්න

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

>>> re.findall(course_pattern, text)  

[('100', 'INF', 'පරිගණක විද්‍යාව'), ('213', 'MAT', 'ගණිත'), ('156', 'ENG', 'ඉංග්‍රීසි')]

"ගිජු" ගැලපීම පිළිබඳ සංකල්පය

සම්මතයට අනුව, ගැළපෙන උපරිම දත්ත ප්‍රමාණය උකහා ගැනීම සඳහා නිත්‍ය ප්‍රකාශන වැඩසටහන්ගත කර ඇත. ඔබට වඩා අඩුවෙන් අවශ්‍ය වුවද.

අපි ටැගය ලබා ගැනීමට අවශ්‍ය සාම්පල HTML කේතයක් බලමු.

>>> පෙළ = “ගිජුකම නිත්‍ය ප්‍රකාශන ගැලපීමේ උදාහරණය”  

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

['ගිජු නිත්‍ය ප්‍රකාශන ගැලපීමේ උදාහරණය']

එක් ටැග් එකක් පමණක් උපුටා ගැනීම වෙනුවට, පයිතන්ට සම්පූර්ණ තන්තුවම ලැබුණි. ඒකයි තණ්හා කියලා කියන්නේ.

සහ ටැගය පමණක් ලබා ගැනීමට කුමක් කළ යුතුද? මෙම අවස්ථාවේදී, ඔබ කම්මැලි ගැලපීම භාවිතා කළ යුතුය. එවැනි ප්‍රකාශනයක් නියම කිරීම සඳහා, රටාවේ අවසානයට ප්‍රශ්නාර්ථ ලකුණක් එකතු කරනු ලැබේ.

ඔබට පහත කේතය සහ පරිවර්තකයේ ප්‍රතිදානය ලැබෙනු ඇත.

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

[","]

මුලින්ම හමු වූ සිදුවීම පමණක් ලබා ගැනීමට අවශ්ය නම්, ක්රමය භාවිතා වේ සොයන්න ().

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

"

එතකොට opening tag එක විතරයි හම්බ වෙන්නේ.

ජනප්‍රිය ප්‍රකාශන සැකිලි

මෙහි බහුලව භාවිතා වන නිත්‍ය ප්‍රකාශන රටා අඩංගු වගුවකි.

පයිතන් 3 සඳහා රී මොඩියුලය සඳහා ලේඛනගත කිරීම. නිත්‍ය ප්‍රකාශන සඳහා නැවත මොඩියුලය

නිගමනය

නිතිපතා ප්රකාශනයන් සමඟ වැඩ කිරීම සඳහා වඩාත් මූලික ක්රම පමණක් අපි සලකා බැලුවෙමු. ඕනෑම අවස්ථාවක, ඔවුන් කොතරම් වැදගත්ද කියා ඔබ දැක ඇති. සම්පූර්ණ පෙළ හෝ එහි තනි කොටස් විග්‍රහ කිරීම අවශ්‍යද, සමාජ ජාලයක පළ කිරීමක් විශ්ලේෂණය කිරීම හෝ පසුව එය සැකසීම සඳහා දත්ත එකතු කිරීම අවශ්‍යද යන්න මෙහි වෙනසක් නැත. නිතිපතා ප්රකාශනයන් මෙම කාරණය සම්බන්ධයෙන් විශ්වසනීය උපකාරකයෙකි.

එවැනි කාර්යයන් ඉටු කිරීමට ඔවුන් ඔබට ඉඩ සලසයි:

  1. ඊමේල් ලිපිනයක් හෝ දුරකථන අංකයක් වැනි දත්තවල ආකෘතිය සඳහන් කිරීම.
  2. නූලක් ලබා ගැනීම සහ එය කුඩා නූල් කිහිපයකට බෙදීම.
  3. සෙවීම, අවශ්‍ය තොරතුරු උකහා ගැනීම හෝ අක්ෂරවල කොටසක් ප්‍රතිස්ථාපනය කිරීම වැනි පෙළ සමඟ විවිධ මෙහෙයුම් සිදු කරන්න.

නිත්‍ය ප්‍රකාශන ඔබට සුළු නොවන මෙහෙයුම් සිදු කිරීමට ද ඉඩ සලසයි. මුලින්ම බැලූ බැල්මට මෙම විද්යාව ප්රගුණ කිරීම පහසු නැත. නමුත් ප්‍රායෝගිකව, සෑම දෙයක්ම ප්‍රමිතිගත කර ඇත, එබැවින් එය එක් වරක් සොයා ගැනීමට ප්‍රමාණවත් වේ, ඉන්පසු මෙම මෙවලම පයිතන් හි පමණක් නොව වෙනත් ඕනෑම ක්‍රමලේඛන භාෂාවකින් ද භාවිතා කළ හැකිය. දත්ත සැකසුම් ස්වයංක්‍රීය කිරීමට Excel පවා සාමාන්‍ය ප්‍රකාශන භාවිතා කරයි. එබැවින් මෙම මෙවලම භාවිතා නොකිරීම පාපයකි.

ඔබමයි