日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
整理了幾個Python正則表達式,拿走就能用!

正則表達式可用于搜索、編輯和操作文本。Python RegEx 被幾乎所有的公司廣泛使用,并且對他們的應(yīng)用程序具有良好的行業(yè)吸引力,從而使得正則表達式越來越受重視。

成都創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),樺甸企業(yè)網(wǎng)站建設(shè),樺甸品牌網(wǎng)站建設(shè),網(wǎng)站定制,樺甸網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,樺甸網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。

今天我們就一起來學(xué)習(xí)下 Python 正則表達式。

為什么要使用正則表達式。

為了回答這個問題,我們先來看看我們面臨的各種問題,而這些問題又可以通過使用正則表達式來解決。

考慮以下場景:

文末有一個包含大量數(shù)據(jù)的日志文件,從這個日志文件中,希望只獲取日期和時間。乍一看,日志文件的可讀性是很低的。

在這種情況下,可以使用正則表達式來識別模式并輕松提取所需信息。

考慮下一個場景:你是一名銷售人員,有很多電子郵件地址,其中很多地址都是假的/無效的,看看下面的圖片:

我們可以做的是使用正則表達式,可以驗證電子郵件地址的格式并從真實 ID 中過濾掉虛假 ID。

下一個場景與銷售員示例的場景非常相似,考慮下圖:

我們?nèi)绾悟炞C電話號碼,然后根據(jù)原產(chǎn)國對其進行分類?

每個正確的數(shù)字都會有一個特定的模式,可以通過使用正則表達式來跟蹤和跟蹤。

接下來是另一個簡單的場景:

我們有一個學(xué)生數(shù)據(jù)庫,其中包含姓名、年齡和地址等詳細信息??紤]一下地區(qū)代碼最初是 59006 但現(xiàn)在已更改為 59076 的情況,這種情況為每個學(xué)生手動更新此代碼將非常耗時且過程非常漫長。

基本上,為了使用正則表達式解決這些問題,我們首先從包含 pin 碼的學(xué)生數(shù)據(jù)中找到一個特定的字符串,然后將它們?nèi)刻鎿Q為新字符串。

什么是正則表達式

正則表達式用于識別文本字符串中的搜索模式,它還有助于找出數(shù)據(jù)的正確性,甚至可以使用正則表達式進行查找、替換和格式化數(shù)據(jù)等操作。

考慮以下示例:

在給定字符串的所有數(shù)據(jù)中,假設(shè)我們只需要城市,這可以以格式化的方式轉(zhuǎn)換為僅包含名稱和城市的字典。現(xiàn)在的問題是,我們能否確定一種模式來猜測名稱和城市?此外我們也可以找出年齡,隨著年齡的增長,這很容易,對吧?它只是一個整數(shù)。

我們?nèi)绾翁幚磉@個名字?如果你看一下這個模式,所有的名字都以大寫字母開頭。借助正則表達式,我們可以使用此方法識別姓名和年齡。

我們可以使用下面的代碼

import re
Nameage = '''
Janice is 22 and Theon is 33
Gabriel is 44 and Joey is 21
'''
ages = re.findall(r'd{1,3}', Nameage)
names = re.findall(r'[A-Z][a-z]*',Nameage)
ageDict = {}
x = 0
for eachname in names
ageDict[eachname] = ages[x]
x+=1
print(ageDict)

Output:

{'Janice': '22', 'Theon': '33', 'Gabriel': '44', 'Joey': '21'}

正則表達式幾個示例:

可以使用正則表達式執(zhí)行許多操作。在這里,我列出了一些幫助更好地理解正則表達式的用法非常重要的內(nèi)容。

讓我們首先檢查如何在字符串中找到特定單詞

在字符串中查找一個單詞

import re
if re.search("inform","we need to inform him with the latest information"):
print("There is inform")

我們在這里所做的一切都是為了搜索單詞 inform 是否存在于我們的搜索字符串中。

當然我們還可以優(yōu)化以下代碼

import re
allinform = re.findall("inform","We need to inform him with the latest information!")
for i in allinform:
print(i)

在這里,在這種特殊情況下,將找到兩次infor。一個來自inform,另一個來自information。

如上所示,在正則表達式中查找單詞就這么簡單。

接下來我們將了解如何使用正則表達式生成迭代器。

生成迭代器

生成迭代器是找出并目標字符串的開始和結(jié)束索引的簡單過程??紤]以下示例:

import re
Str = "we need to inform him with the latest information"
for i in re.finditer("inform.", Str
locTuple = i.span()
print(locTuple)

對于找到的每個匹配項,都會打印開始和結(jié)束索引。當我們執(zhí)行上述程序時,輸出如下:

(11, 18)
(38, 45)

接下來我們將檢查如何使用正則表達式將單詞與模式匹配。

將單詞與模式匹配

考慮一個輸入字符串,我們必須將某些單詞與該字符串匹配。要詳細說明,請查看以下示例代碼:

import re
Str = "Sat, hat, mat, pat"
allStr = re.findall("[shmp]at", Str)
for i in allStr:
print(i)

字符串中有什么共同點?可以看到字母“a”和“t”在所有輸入字符串中都很常見。代碼中的 [shmp] 表示要查找的單詞的首字母,因此,任何以字母 s、h、m 或 p 開頭的子字符串都將被視為匹配,其中任何一個,并且最后必須跟在“at”后面。

Output:

hat
mat
pat

接下來我們將檢查如何使用正則表達式一次匹配一系列字符。

匹配一系列字符范圍

我們希望輸出第一個字母應(yīng)該在 h 和 m 之間并且必須緊跟 at 的所有單詞??纯聪旅娴睦樱覀儜?yīng)該得到的輸出是 hat 和 mat

import re
Str = "sat, hat, mat, pat"
someStr = re.findall("[h-m]at", Str)
for i in someStr:
print(i)

Output:

hat
mat

現(xiàn)在讓我們稍微改變一下上面的程序以獲得一個不同的結(jié)果

import re
Str = "sat, hat, mat, pat"
someStr = re.findall("[^h-m]at", Str)
for i in someStr:
print(i)

發(fā)現(xiàn)細微差別了嗎,我們在正則表達式中添加了插入符號 (^),它的作用否定了它所遵循的任何效果。我們不會給出從 h 到 m 開始的所有內(nèi)容的輸出,而是會向我們展示除此之外的所有內(nèi)容的輸出。

我們可以預(yù)期的輸出是不以 h 和 m 之間的字母開頭但最后仍然緊隨其后的單詞。Output:

sat
pat

替換字符串:

接下來,我們可以使用正則表達式檢查另一個操作,其中我們將字符串中的一項替換為其他內(nèi)容:

import re
Food = "hat rat mat pat"
regex = re.compile("[r]at")
Food = regex.sub("food", Food)
print(Food)

在上面的示例中,單詞 rat 被替換為單詞 food。正則表達式的替代方法就是利用這種情況,它也有各種各樣的實際用例。Output:

hat food mat pat

反斜杠問題

import re
randstr = "Here is Edureka"
print(randstr)

Output:

Here is Edureka

這就是反斜杠問題,其中一個斜線從輸出中消失了,這個特殊問題可以使用正則表達式來解決。

import re
randstr = "Here is Edureka"
print(re.search(r"Edureka", randstr))

Output:

這就是使用正則表達式解決反斜杠問題的簡單方法。

匹配單個字符

使用正則表達式可以輕松地單獨匹配字符串中的單個字符

import re
randstr = "12345"
print("Matches: ", len(re.findall("d{5}", randstr)))

Output:

Matches: 1

刪除換行符

我們可以在 Python 中使用正則表達式輕松刪除換行符

import re
randstr = '''
You Never
Walk Alone
Liverpool FC
'''
print(randstr)
regex = re.compile("
")
randstr = regex.sub(" ", randstr)
print(randstr)

Output:

You Never
Walk Alone
Liverpool FC
You Never Walk Alone Liverpool FC

可以從上面的輸出中看到,新行已被空格替換,并且輸出打印在一行上。

還可以使用許多其他東西,具體取決于要替換字符串的內(nèi)容

: Backspace
: Formfeed
: Carriage Return
: Tab
: Vertical Tab

可以使用如下代碼

import re
randstr = "12345"
print("Matches:", len(re.findall("d", randstr)))

Output:

Matches: 5

從上面的輸出可以看出,d 匹配字符串中存在的整數(shù)。但是,如果我們用 D 替換它,它將匹配除整數(shù)之外的所有內(nèi)容,與 d 完全相反。

接下來我們了解一些在 Python 中使用正則表達式的重要實際例子。

正則表達式的實際例子

我們將檢查使用最為廣泛的 3 個主要用例

  •  電話號碼驗證
  •  電子郵件地址驗證
  •  網(wǎng)頁抓取

電話號碼驗證

需要在任何相關(guān)場景中輕松驗證電話號碼

考慮以下電話號碼:

  • 444-122-1234
  • 123-122-78999
  • 111-123-23
  • 67-7890-2019

電話號碼的一般格式如下:

  • 以 3 位數(shù)字和“-”符號開頭
  • 3 個中間數(shù)字和“-”號
  • 最后4位數(shù)

我們將在下面的示例中使用 w,請注意 w = [a-zA-Z0-9_]

import re
phn = "412-555-1212"
if re.search("w{3}-w{3}-w{4}", phn):
print("Valid phone number")

Output:

Valid phone number

電子郵件驗證

在任何情況下驗證電子郵件地址的有效性。

考慮以下電子郵件地址示例:

  • Anirudh@gmail.com
  • Anirudh@com
  • AC.com
  • 123 @.com

我們只需一眼就可以從無效的郵件 ID 中識別出有效的郵件 ID,但是當我們的程序為我們做這件事時,卻并沒有那么容易,但是使用正則,就非常簡單了。

指導(dǎo)思路,所有電子郵件地址應(yīng)包括:

  • 1 到 20 個小寫和/或大寫字母、數(shù)字以及 . _ % +
  • 一個@符號
  •  2 到 20 個小寫和大寫字母、數(shù)字和加號
  • 一個點號
  • 2 到 3 個小寫和大寫字母
import re
email = "ac@aol.com md@.com @seo.com dc@.com"
print("Email Matches: ", len(re.findall("[w._%+-]{1,20}@[w.-]{2,20}.[A-Za-z]{2,3}", email)))

Output:

Email Matches: 1

從上面的輸出可以看出,我們輸入的 4 封電子郵件中有一封有效的郵件。

這基本上證明了使用正則表達式并實際使用它們是多么簡單和高效。

網(wǎng)頁抓取

從網(wǎng)站上刪除所有電話號碼以滿足需求。

要了解網(wǎng)絡(luò)抓取,請查看下圖:

我們已經(jīng)知道,一個網(wǎng)站將由多個網(wǎng)頁組成,我們需要從這些頁面中抓取一些信息。

網(wǎng)頁抓取主要用于從網(wǎng)站中提取信息,可以將提取的信息以 XML、CSV 甚至 MySQL 數(shù)據(jù)庫的形式保存,這可以通過使用 Python 正則表達式輕松實現(xiàn)。

import urllib.request
from re import findall
url = "http://www.summet.com/dmsi/html/codesamples/addresses.html"
response = urllib.request.urlopen(url)
html = response.read()
htmlStr = html.decode()
pdata = findall("(d{3}) d{3}-d{4}", htmlStr)
for item in pdata:
print(item)

Output:

(257) 563-7401
(372) 587-2335
(786) 713-8616
(793) 151-6230
(492) 709-6392
(654) 393-5734
(404) 960-3807
(314) 244-6306
(947) 278-5929
(684) 579-1879
(389) 737-2852
...

我們首先是通過導(dǎo)入執(zhí)行網(wǎng)絡(luò)抓取所需的包,最終結(jié)果包括作為使用正則表達式完成網(wǎng)絡(luò)抓取的結(jié)果而提取的電話號碼。


名稱欄目:整理了幾個Python正則表達式,拿走就能用!
分享路徑:http://www.5511xx.com/article/ccocips.html