பொருளடக்கம்
- வழக்கமான வெளிப்பாடுகள்: ஒரு அறிமுகம்
- வழக்கமான வெளிப்பாடுகளைப் பயன்படுத்தி வெவ்வேறு சரங்களிலிருந்து தனித்தனி தகவலைப் பெறுதல்
- மூன்று செயல்பாடுகளுடன் பொருத்தங்களைக் கண்டறிதல்
- உரையின் ஒரு பகுதியை மறு நூலகத்துடன் மாற்றுகிறது
- வழக்கமான வெளிப்பாடு குழுக்கள் என்றால் என்ன?
- "பேராசை" பொருத்தத்தின் கருத்து
- பிரபலமான வெளிப்பாடு டெம்ப்ளேட்கள்
- தீர்மானம்
எந்தவொரு நிரலாக்க மொழியிலும் வழக்கமான வெளிப்பாடுகள் மிகவும் பிரபலமான அங்கமாகும். உங்களுக்குத் தேவையான தகவலை விரைவாக அணுக அவை உதவுகின்றன. குறிப்பாக, உரையைச் செயலாக்க வேண்டிய அவசியம் ஏற்படும் போது அவை பயன்படுத்தப்படுகின்றன. பைதான் முன்னிருப்பாக ஒரு சிறப்பு தொகுதியுடன் வருகிறது. re, இது வழக்கமான வெளிப்பாடுகளுடன் வேலை செய்வதற்கு பொறுப்பாகும்.
இன்று நாம் பொதுவாக என்ன, அவர்களுடன் எவ்வாறு வேலை செய்வது மற்றும் எப்படி தொகுதி என்பது பற்றி விரிவாகப் பேசுவோம் re உதவும்.
வழக்கமான வெளிப்பாடுகள்: ஒரு அறிமுகம்
வழக்கமான வெளிப்பாடுகளின் பயன்பாடுகள் என்ன? கிட்டத்தட்ட அனைத்து. உதாரணமாக, இவை:
- உரை சரிபார்ப்பு தேவைப்படும் இணைய பயன்பாடுகள். ஒரு பொதுவான உதாரணம் ஆன்லைன் அஞ்சல் கிளையண்டுகள்.
- உரைகள், தரவுத்தளங்கள் மற்றும் பலவற்றுடன் தொடர்புடைய பிற திட்டங்கள்.
தொடரியல் பாகுபடுத்துவதற்கு முன், நூலகத்தின் செயல்பாட்டின் அடிப்படைக் கொள்கைகளை நாம் இன்னும் விரிவாக புரிந்து கொள்ள வேண்டும். re மற்றும் பொதுவாக, அதைப் பற்றி பொதுவாக என்ன நல்லது. உண்மையான நடைமுறையிலிருந்து எடுத்துக்காட்டுகளையும் தருவோம், அங்கு அவற்றின் பயன்பாட்டின் பொறிமுறையை விவரிப்போம். நீங்கள் ஒரு டெம்ப்ளேட்டை உருவாக்கலாம், உரையுடன் பலவிதமான செயல்பாடுகளைச் செய்ய உங்களுக்கு ஏற்றது.
ரீ லைப்ரரியில் டெம்ப்ளேட் என்றால் என்ன?
இதன் மூலம், நீங்கள் பல்வேறு வகையான தகவல்களைத் தேடலாம், அவற்றுடன் தொடர்புடைய தகவல்களைப் பெறலாம், மற்ற செயல்பாடுகளை மேலும் தகவமைப்பு செய்ய முடியும். மற்றும், நிச்சயமாக, இந்த தரவு செயலாக்க.
எடுத்துக்காட்டாக, பின்வரும் டெம்ப்ளேட்டை எடுத்துக் கொள்ளுங்கள்: s+. இது எந்த விண்வெளி பாத்திரத்தையும் குறிக்கிறது. நீங்கள் அதில் ஒரு பிளஸ் அடையாளத்தைச் சேர்த்தால், இந்த வடிவத்தில் ஒன்றுக்கு மேற்பட்ட இடங்கள் உள்ளன என்று அர்த்தம். உடன் அழைக்கப்படும் தாவல் எழுத்துகளுடன் கூட இது பொருந்தும் t+.
அவற்றைப் பயன்படுத்துவதற்கு முன், நீங்கள் நூலகத்தை இறக்குமதி செய்ய வேண்டும் Re. அதன் பிறகு, டெம்ப்ளேட்டை தொகுக்க ஒரு சிறப்பு கட்டளையைப் பயன்படுத்துகிறோம். இது இரண்டு படிகளில் செய்யப்படுகிறது.
>>> மீண்டும் இறக்குமதி
>>> regex = re.compile('s+')
குறிப்பாக, இந்த குறியீடு பயன்படுத்தக்கூடிய ஒரு டெம்ப்ளேட்டைத் தொகுக்கும் செயல்பாட்டைச் செய்கிறது. எடுத்துக்காட்டாக, இடைவெளிகளைத் தேட (ஒன்று அல்லது அதற்கு மேற்பட்டவை).
வழக்கமான வெளிப்பாடுகளைப் பயன்படுத்தி வெவ்வேறு சரங்களிலிருந்து தனித்தனி தகவலைப் பெறுதல்
பின்வரும் தகவல்களைக் கொண்ட ஒரு மாறி நம்மிடம் உள்ளது என்று வைத்துக்கொள்வோம்.
>>> உரை = “””100 INF தகவல்
213 MAT கணிதம்
156 ENG ஆங்கிலம்»»»
இதில் மூன்று பயிற்சி வகுப்புகள் உள்ளன. அவை ஒவ்வொன்றும் மூன்று பகுதிகளைக் கொண்டுள்ளது - எண், குறியீடு மற்றும் பெயர். இந்த வார்த்தைகளுக்கு இடையே உள்ள இடைவெளி வித்தியாசமாக இருப்பதைக் காண்கிறோம். இந்த வரியை தனி எண்களாகவும் சொற்களாகவும் பிரிக்க என்ன செய்ய வேண்டும்? இந்த இலக்கை அடைய இரண்டு வழிகள் உள்ளன:
- ஒரு செயல்பாட்டை அழைக்கவும் மீண்டும் பிளவு.
- செயல்பாடு பொருந்தும் பிளவு ஐந்து ரீஜெக்ஸ்.
எங்கள் மாறிக்கு ஒவ்வொரு முறைகளின் தொடரியல் பயன்படுத்துவதற்கான எடுத்துக்காட்டு இங்கே.
>>> re.split('s+', text)
# அல்லது
>>> regex.split(உரை)
வெளியீடு: ['100', 'INF', 'கணினி அறிவியல்', '213', 'MAT', 'கணிதம்', '156', 'ENG', 'ஆங்கிலம்']
பொதுவாக, இரண்டு முறைகளையும் பயன்படுத்தலாம். ஆனால் செயல்பாட்டைப் பல முறை பயன்படுத்துவதற்குப் பதிலாக வழக்கமான வெளிப்பாட்டைப் பயன்படுத்துவது உண்மையில் மிகவும் எளிதானது. மீண்டும் பிளவு.
மூன்று செயல்பாடுகளுடன் பொருத்தங்களைக் கண்டறிதல்
ஒரு சரத்திலிருந்து எண்களை மட்டும் பிரித்தெடுக்க வேண்டும் என்று வைத்துக்கொள்வோம். இதற்கு என்ன செய்ய வேண்டும்?
re.findall()
செயல்பாட்டிற்கான பயன்பாட்டு வழக்கு இங்கே உள்ளது கண்டுபிடி(), இது வழக்கமான வெளிப்பாடுகளுடன் சேர்ந்து, உரை மாறியிலிருந்து ஒன்று அல்லது அதற்கு மேற்பட்ட எண்களின் நிகழ்வுகளைப் பிரித்தெடுக்க உங்களை அனுமதிக்கிறது.
>>> அச்சு(உரை)
100 INF தகவல்
213 MAT கணிதம்
156 ENG ஆங்கிலம்
>>> regex_num = re.compile('d+')
>>> regex_num.findall(text)
['100', '213', '156']
d குறியீட்டுடன் சேர்ந்து, மாறி அல்லது உரையில் உள்ள எந்த எண் மதிப்பையும் குறிக்கும் டெம்ப்ளேட்டைப் பயன்படுத்தினோம். நாம் ஒன்று + அங்கு சேர்த்ததால், குறைந்தபட்சம் ஒரு எண்ணாவது இருக்க வேண்டும்.
பொருத்தத்தைக் கண்டறிய ஒரு இலக்கத்தின் இருப்பு தேவையில்லை என்பதைக் குறிப்பிட நீங்கள் * அடையாளத்தைப் பயன்படுத்தலாம்.
ஆனால் எங்கள் விஷயத்தில், நாங்கள் + பயன்படுத்தியதால், நாங்கள் பிரித்தெடுத்தோம் கண்டுபிடி() உரையிலிருந்து பாடங்களின் 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.sub(). எங்கள் படிப்புகளின் பட்டியல் கொஞ்சம் மாறிவிட்டது என்று வைத்துக்கொள்வோம். ஒவ்வொரு டிஜிட்டல் மதிப்புக்குப் பிறகும் ஒரு தாவல் இருப்பதைக் காண்கிறோம். இந்த வரிசை அனைத்தையும் ஒரே வரியில் இணைப்பதே எங்கள் பணி. இதைச் செய்ய, s+ என்ற வெளிப்பாட்டை மாற்ற வேண்டும் கடக்க
அசல் உரை:
# உரையுடன் ஒரு மாறியை உருவாக்கவும்
>>> உரை = “””100 INF t தகவல்
213 MAT t கணிதம்
156 ENG t ஆங்கிலம்»»»
>>> அச்சு(உரை)
100 தகவல் கணினி அறிவியல்
213 MAT கணிதம்
156 இன்ஜி ஆங்கிலம்
விரும்பிய செயல்பாட்டைச் செய்ய, பின்வரும் குறியீடு வரிகளைப் பயன்படுத்தினோம்.
# ஒன்று அல்லது அதற்கு மேற்பட்ட இடைவெளிகளை 1 ஆல் மாற்றவும்
>>> regex = re.compile('s+')
>>> அச்சு(regex.sub(' ', text))
இதன் விளைவாக, எங்களுக்கு ஒரு வரி உள்ளது.
101 COM கணினிகள் 205 MAT கணிதம் 189 ENG ஆங்கிலம்
இப்போது மற்றொரு சிக்கலைக் கவனியுங்கள். இடங்களை வைக்கும் பணியை நாங்கள் எதிர்கொள்ளவில்லை. அனைத்து பாடப் பெயர்களும் புதிய வரியில் தொடங்குவது எங்களுக்கு மிகவும் முக்கியமானது. இதைச் செய்ய, விதிவிலக்குக்கு புதிய வரியைச் சேர்க்கும் மற்றொரு வெளிப்பாடு பயன்படுத்தப்படுகிறது. இது என்ன வகையான வெளிப்பாடு?
நூலகம் Re எதிர்மறை பொருத்தம் போன்ற அம்சத்தை ஆதரிக்கிறது. இது நேரடியான ஒன்றிலிருந்து வேறுபடுகிறது, அதில் சாய்வுக்கு முன் ஒரு ஆச்சரியக்குறி உள்ளது. அதாவது, புதிய வரி எழுத்தைத் தவிர்க்க வேண்டும் என்றால், n என்பதற்குப் பதிலாக !n என்று எழுத வேண்டும்.
பின்வரும் குறியீட்டைப் பெறுகிறோம்.
# புதிய வரியைத் தவிர அனைத்து இடங்களையும் அகற்றவும்
>>> regex = re.compile('(?!n)s+)')
>>> அச்சு(regex.sub(' ', text))
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()
"
அப்போதுதான் ஓப்பனிங் டேக் காணப்படும்.
பிரபலமான வெளிப்பாடு டெம்ப்ளேட்கள்
பொதுவாகப் பயன்படுத்தப்படும் வழக்கமான வெளிப்பாடு வடிவங்களைக் கொண்ட அட்டவணை இங்கே உள்ளது.
தீர்மானம்
வழக்கமான வெளிப்பாடுகளுடன் வேலை செய்வதற்கான மிக அடிப்படையான முறைகளை மட்டுமே நாங்கள் கருத்தில் கொண்டுள்ளோம். எப்படியிருந்தாலும், அவை எவ்வளவு முக்கியம் என்பதை நீங்கள் பார்த்திருக்கிறீர்கள். முழு உரையையும் அல்லது அதன் தனிப்பட்ட துண்டுகளையும் அலசுவது அவசியமா, சமூக வலைப்பின்னலில் ஒரு இடுகையை பகுப்பாய்வு செய்வது அவசியமா அல்லது பின்னர் அதைச் செயலாக்க தரவைச் சேகரிப்பது அவசியமா என்பதில் எந்த வித்தியாசமும் இல்லை. வழக்கமான வெளிப்பாடுகள் இந்த விஷயத்தில் நம்பகமான உதவியாளர்.
இது போன்ற பணிகளைச் செய்ய அவை உங்களை அனுமதிக்கின்றன:
- மின்னஞ்சல் முகவரி அல்லது தொலைபேசி எண் போன்ற தரவின் வடிவமைப்பைக் குறிப்பிடுகிறது.
- ஒரு சரத்தைப் பெற்று அதை பல சிறிய சரங்களாகப் பிரித்தல்.
- தேடுதல், தேவையான தகவல்களைப் பிரித்தெடுத்தல் அல்லது எழுத்துக்களின் பகுதியை மாற்றுதல் போன்ற உரையுடன் பல்வேறு செயல்பாடுகளைச் செய்யவும்.
வழக்கமான வெளிப்பாடுகள் நீங்கள் அல்லாத சிறிய செயல்பாடுகளை செய்ய அனுமதிக்கும். முதல் பார்வையில், இந்த அறிவியலில் தேர்ச்சி பெறுவது எளிதானது அல்ல. ஆனால் நடைமுறையில், எல்லாம் தரப்படுத்தப்பட்டுள்ளது, எனவே அதை ஒரு முறை கண்டுபிடித்தால் போதும், அதன் பிறகு இந்த கருவியை பைத்தானில் மட்டுமல்ல, வேறு எந்த நிரலாக்க மொழியிலும் பயன்படுத்தலாம். தரவு செயலாக்கத்தை தானியக்கமாக்க எக்செல் கூட வழக்கமான வெளிப்பாடுகளைப் பயன்படுத்துகிறது. எனவே இந்த கருவியை பயன்படுத்தாமல் இருப்பது பாவம்.