成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

使用Python正則表達式操作文本數(shù)據(jù)

Yuanf / 1484人閱讀

摘要:在中,使用的內(nèi)置模塊處理正則表達式操作。使用正則表達式對象在字符串中搜索模式。編寫和使用正則表達式在中創(chuàng)建正則表達式的第一步是導(dǎo)入模塊正則表達式使用模式字符串表示,模式字符串是指定所需搜索模式的字符串。

來源 | 愿碼(ChainDesk.CN)內(nèi)容編輯

愿碼Slogan | 連接每個程序員的故事

網(wǎng)站 | http://chaindesk.cn

愿碼愿景 | 打造全學(xué)科IT系統(tǒng)免費課程,助力小白用戶、初級工程師0成本免費系統(tǒng)學(xué)習(xí)、低成本進階,幫助BAT一線資深工程師成長并利用自身優(yōu)勢創(chuàng)造睡后收入。

官方公眾號 | 愿碼 | 愿碼服務(wù)號 | 區(qū)塊鏈部落

免費加入愿碼全思維工程師社群 | 任一公眾號回復(fù)“愿碼”兩個字獲取入群二維碼


本文閱讀時長:7min

什么是正則表達式

正則表達式,是簡單地字符的序列,可指定特定的搜索模式。正則表達式已存在很長一段時間,并且它本身就是計算機科學(xué)的一個領(lǐng)域。

在 Python中,使用Python的內(nèi)置re模塊處理正則表達式操作 。在本節(jié)中,我將介紹創(chuàng)建正則表達式并使用它們的基礎(chǔ)知識。您可以使用以下步驟實現(xiàn)正則表達式:

指定模式字符串。

將模式字符串編譯為正則表達式對象。

使用正則表達式對象在字符串中搜索模式。

可選:從字符串中提取匹配的模式。

編寫和使用正則表達式

在Python中創(chuàng)建正則表達式的第一步是導(dǎo)入re 模塊:

import re

Python正則表達式使用模式字符串表示,模式字符串是指定所需搜索模式的字符串。在最簡單的形式中,模式字符串只能由字母,數(shù)字和空格組成。以下模式字符串表示精確字符序列的搜索查詢。您可以將每個角色視為一個多帶帶的模式。在后面的例子中,我將討論更復(fù)雜的模式:

import re

pattern_string = "this is the pattern"

下一步是將模式字符串處理為Python可以使用的對象,以便搜索模式。這是使用re模塊的compile()方法完成的。的編譯()方法將圖案字符串作為參數(shù)并返回一個正則表達式對象:

import re

pattern_string = "this is the pattern" regex = re.compile(pattern_string)

獲得正則表達式對象后,可以使用它在搜索字符串搜索模式字符串中指定的模式。搜索字符串只是您要在其中查找模式的字符串的名稱。要搜索模式,可以使用regex對象的search()方法,如下所示:

import re

pattern_string = "this is the pattern" regex = re.compile(pattern_string)

match = regex.search("this is the pattern")

如果模式字符串中指定的模式位于搜索字符串中,則search()方法將返回匹配對象。否則,它返回None數(shù)據(jù)類型,這是一個空值。

由于Python相當(dāng)松散地解釋了True和False值,因此搜索函數(shù)的結(jié)果可以像if語句中的布爾值一樣使用,這可能相當(dāng)方便:

....

match = regex.search("this is the pattern") if match:

print("this was a match!")

這個模式應(yīng)該產(chǎn)生一個匹配,因為它與模式字符串中指定的模式完全匹配。如果在搜索字符串的任意位置找到模式,搜索函數(shù)將生成匹配,如下所示:

....

match = regex.search("this is the pattern") if match:

print("this was a match!")

if regex.search("*** this is the pattern ***"): print("this was not a match!")

if not regex.search("this is not the pattern"): print("this was not a match!")
特殊字符

正則表達式取決于使用某些特殊字符來表達模式。因此,除非用于預(yù)期目的,否則不應(yīng)直接使用以下字符:

. ^ $ * + ? {} () [] | 

如果確實需要使用模式字符串中的任何前面提到的字符來搜索該字符,則可以編寫以反斜杠字符開頭的字符。這稱為轉(zhuǎn)義字符。這是一個例子:

pattern string = "c*b"

## matches "c*b"

如果需要搜索反斜杠字符本身,則使用兩個反斜杠字符,如下所示:

pattern string = "cb"

## matches "cb"
匹配空格

在模式字符串中的任何位置使用s都匹配空白字符。這比空格字符更通用,因為它適用于制表符和換行符:

....

a_space_b = re.compile("asb") if a_space_b.search("a b"):

print(""a b" is a match!")

if a_space_b.search("1234 a b 1234"): print(""1234 a b 1234" is a match")

if a_space_b.search("ab"):

print(""1234 a b 1234" is a match")
匹配字符串的開頭

如果在模式字符串的開頭使用^字符,則只有在搜索字符串的開頭找到模式時,正則表達式才會產(chǎn)生匹配:

....

a_at_start = re.compile("^a") if a_at_start.search("a"):

print(""a" is a match")

if a_at_start.search("a 1234"): print(""a 1234" is a match")

if a_at_start.search("1234 a"): print(""1234 a" is a match")
匹配字符串的結(jié)尾

類似地,如果在模式字符串的末尾使用$符號,則正則表達式將僅在模式出現(xiàn)在搜索字符串的末尾時生成匹配:

....

a_at_end = re.compile("a$") if a_at_end.search("a"):

print(""a" is a match") if a_at_end.search("a 1234"):

print(""a 1234" is a match") if a_at_end.search("1234 a"):

print(""1234 a" is a match")
匹配一系列字符

可以匹配一系列字符而不是一個字符。這可以為模式增加一些靈活性:

[A-Z] matches all capital letters

[a-z] matches all lowercase letters

[0-9] matches all digits

....

lower_case_letter = re.compile("[a-z]") if lower_case_letter.search("a"):

print(""a" is a match")

if lower_case_letter.search("B"): print(""B" is a match")

if lower_case_letter.search("123 A B 2"): print(""123 A B 2" is a match")

digit = re.compile("[0-9]") if digit.search("1"):

print(""a" is a match") if digit.search("342"):

print(""a" is a match") if digit.search("asdf abcd"):

print(""a" is a match")
匹配幾種模式中的任何一種

如果存在構(gòu)成匹配的固定數(shù)量的模式,則可以使用以下語法組合它們:

(||)

以下a_or_b正則表達式將匹配任何字符或ab字符的字符串:

....

a_or_b = re.compile("(a|b)") if a_or_b.search("a"):

print(""a" is a match") if a_or_b.search("b"):

print(""b" is a match") if a_or_b.search("c"):

print(""c" is a match")
匹配序列而不是僅匹配一個字符

如果+字符位于另一個字符或模式之后,則正則表達式將匹配該模式的任意長序列。這非常有用,因為它可以很容易地表達可以是任意長度的單詞或數(shù)字。

將模式放在一起

通過一個接一個地組合圖案串可以產(chǎn)生更復(fù)雜的圖案。在下面的示例中,我創(chuàng)建了一個正則表達式,用于搜索嚴格后跟單詞的數(shù)字。生成正則表達式的模式字符串由以下內(nèi)容組成:

與數(shù)字序列匹配的模式字符串:[0-9]+與空白字符匹配的模式字符串:s與字母序列匹配的模式字符串:[az] +

與字符串結(jié)尾或空格字符匹配的模式字符串:(s | $)

....

number_then_word = re.compile("[0-9]+s[a-z]+(s|$)")
正則表達式split()函數(shù)

Python中的Regex 對象也有一個split()方法。split方法將搜索字符串拆分為子字符串?dāng)?shù)組。所述分裂發(fā)生在沿著其中該圖案被識別的字符串中的每個位置。結(jié)果是在模式的實例之間出現(xiàn)的字符串?dāng)?shù)組。如果模式出現(xiàn)在搜索字符串的開頭或結(jié)尾,則分別在結(jié)果數(shù)組的開頭或結(jié)尾包含一個空字符串:

....

print(a_or_b.split("123a456b789")) print(a_or_b.split("a1b"))

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/43766.html

相關(guān)文章

  • python爬蟲抓取純靜態(tài)網(wǎng)站及其資源

    摘要:下面跟大家詳細分享一下寫爬蟲抓取靜態(tài)網(wǎng)站的全過程。而我們上面說的元字符都代表一定的規(guī)則和占據(jù)一定的字符。 遇到的需求 前段時間需要快速做個靜態(tài)展示頁面,要求是響應(yīng)式和較美觀。由于時間較短,自己動手寫的話也有點麻煩,所以就打算上網(wǎng)找現(xiàn)成的。 中途找到了幾個頁面發(fā)現(xiàn)不錯,然后就開始思考怎么把頁面給下載下來。 由于之前還沒有了解過爬蟲,自然也就沒有想到可以用爬蟲來抓取網(wǎng)頁內(nèi)容。所以我采取的辦...

    daydream 評論0 收藏0
  • PythonPython正則達式使用指導(dǎo)

    摘要:反斜杠的困擾與大多數(shù)編程語言相同,正則表達式里使用作為轉(zhuǎn)義字符,這就可能造成反斜杠困擾。文本中正則表達式結(jié)束搜索的索引。以元組形式返回全部分組截獲的字符串。用于指定最大分割次數(shù),不指定將全部分割。 1. 正則表達式基礎(chǔ) 1.1. 簡單介紹 正則表達式并不是Python的一部分。正則表達式是用于處理字符串的強大工具,擁有自己獨特的語法以及一個獨立的處理引擎,效率上可能不如str自帶的方法...

    nihao 評論0 收藏0
  • Python實用技法第30篇:從字符串中去掉不需要的字符

    摘要:上一篇文章實用技法第篇用正則表達式處理字符下一篇文章實用技法第篇文本過濾和清理問題我們想在字符串的開始結(jié)尾或中間去掉不需要的字符,比如說空格符。解決方案方法可用來從字符串的開始和結(jié)尾處去掉字符。 上一篇文章: Python實用技法第29篇:用正則表達式處理Unicode字符下一篇文章:Python實用技法第31篇:文本過濾和清理  問題 我們想在字符串的開始、結(jié)尾或中間去掉不需要的字...

    yck 評論0 收藏0
  • Python中的正則達式

    摘要:正則表達式就是用來描述他稱為正則集的代數(shù)的表達式,因此采用正則表達式這個術(shù)語。文本中正則表達式結(jié)束搜索的索引值與和方法的同名參數(shù)相同。對象是一個編號的正則表達式通過提供的一系列方法可以對文本進行匹配查找。 一、概述 今天這篇文章帶領(lǐng)大家學(xué)習(xí)一下Python中的正則表達式,當(dāng)然了,正則表達式本身的內(nèi)容就足以寫好幾本書了,我們這里列出的內(nèi)容,僅僅是Python中常用的和基礎(chǔ)的一些內(nèi)容。 那...

    Juven 評論0 收藏0
  • Python正則達式簡記和re庫

    摘要:正則表達式是定義搜索模式的字符序列。通常這種模式被字符串搜索算法用于字符串上的查找或查找和替換操作,或者用于輸入驗證。 正則表達式是定義搜索模式的字符序列。通常這種模式被字符串搜索算法用于字符串上的查找或查找和替換操作,或者用于輸入驗證。 1. 正則表達式的語法 . 表示任何單個字符 [] 字符集,對單個字符給出取值范圍 [^] 非字符集,對單個字符給出排除范圍 *前一個字符0次或者...

    hizengzeng 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<