最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2019年05月14日 08:55:30   作者:愿碼社區(qū)技術(shù)團隊  
這篇文章主要介紹了使用Python正則表達式操作文本數(shù)據(jù)的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

什么是正則表達式

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

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

  1. 指定模式字符串。
  2. 將模式字符串編譯為正則表達式對象。
  3. 使用正則表達式對象在字符串中搜索模式。
  4. 可選:從字符串中提取匹配的模式。

編寫和使用正則表達式

在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相當松散地解釋了True和False值,因此搜索函數(shù)的結(jié)果可以像if語句中的布爾值一樣使用,這可能相當方便:

....

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方法將搜索字符串拆分為子字符串數(shù)組。所述分裂發(fā)生在沿著其中該圖案被識別的字符串中的每個位置。結(jié)果是在模式的實例之間出現(xiàn)的字符串數(shù)組。如果模式出現(xiàn)在搜索字符串的開頭或結(jié)尾,則分別在結(jié)果數(shù)組的開頭或結(jié)尾包含一個空字符串:

....

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

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 對pandas里的loc并列條件索引的實例講解

    對pandas里的loc并列條件索引的實例講解

    今天小編就為大家分享一篇對pandas里的loc并列條件索引的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • 利用python繪制動態(tài)圣誕下雪圖

    利用python繪制動態(tài)圣誕下雪圖

    圣誕節(jié)快到了,給你最愛的人送上一顆python動態(tài)圣誕下雪圖吧,所以今天小編給大家介紹了如何利用python繪制動態(tài)圣誕下雪圖,文中有詳細的代碼示例,需要的朋友可以參考下
    2023-12-12
  • python錯誤處理詳解

    python錯誤處理詳解

    這篇文章主要介紹了python錯誤處理詳解,本文講解了try語句、錯誤堆棧、記錄錯誤、拋出錯誤等內(nèi)容,需要的朋友可以參考下
    2014-09-09
  • 基于python歷史天氣采集的分析

    基于python歷史天氣采集的分析

    今天小編就為大家分享一篇基于python歷史天氣采集的分析,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • python如何與前端交互舉例詳解

    python如何與前端交互舉例詳解

    在Web開發(fā)中前端與后端之間的數(shù)據(jù)交互,下面這篇文章主要給大家介紹了關(guān)于python如何與前端交互的相關(guān)資料,文章通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-08-08
  • 使用Python監(jiān)控文件內(nèi)容變化代碼實例

    使用Python監(jiān)控文件內(nèi)容變化代碼實例

    在python中文件監(jiān)控主要有兩個庫,一個是pyinotify,一個是watchdog。pyinotify依賴于Linux平臺的inotify,今天我們就來探討下pyinotify.
    2018-06-06
  • Pandas操作兩個Excel實現(xiàn)數(shù)據(jù)對應(yīng)行的合并

    Pandas操作兩個Excel實現(xiàn)數(shù)據(jù)對應(yīng)行的合并

    本文主要介紹了Pandas操作兩個Excel實現(xiàn)數(shù)據(jù)對應(yīng)行的合并,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • Python實現(xiàn)特殊字符判斷并去掉非字母和數(shù)字的特殊字符

    Python實現(xiàn)特殊字符判斷并去掉非字母和數(shù)字的特殊字符

    在 Python 中,可以通過多種方法來判斷字符串中是否包含非字母、數(shù)字的特殊字符,并將這些特殊字符去掉,本文為大家整理了一些常用的,希望對大家有所幫助
    2025-04-04
  • python爬蟲基礎(chǔ)知識點整理

    python爬蟲基礎(chǔ)知識點整理

    在本篇文章里小編給大家整理的是一篇關(guān)于python爬蟲基礎(chǔ)知識點整理內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2020-06-06
  • 對Python中實現(xiàn)兩個數(shù)的值交換的集中方法詳解

    對Python中實現(xiàn)兩個數(shù)的值交換的集中方法詳解

    今天小編就為大家分享一篇對Python中實現(xiàn)兩個數(shù)的值交換的集中方法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01

最新評論

红桥区| 绥滨县| 湖南省| 凉山| 安国市| 石林| 永善县| 偏关县| 织金县| 肃南| 赤壁市| 荣昌县| 申扎县| 大关县| 大荔县| 合水县| 吕梁市| 赤城县| 金昌市| 丹寨县| 卫辉市| 徐汇区| 海盐县| 绩溪县| 贺兰县| 沂水县| 新巴尔虎左旗| 隆尧县| 交口县| 巴中市| 霍山县| 策勒县| 桐乡市| 汕头市| 礼泉县| 淄博市| 喀什市| 广灵县| 兴化市| 金门县| 尉氏县|