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

資訊專欄INFORMATION COLUMN

在Python中查找和替換文本

B0B0 / 1671人閱讀

摘要:最簡(jiǎn)單的查找替換在中查找和替換非常簡(jiǎn)單,如果當(dāng)前對(duì)象是一個(gè)字符串時(shí),你可以使用該類型提供的或者方法查找指定的字符,如果能找到則會(huì)返回字符第一次出現(xiàn)的索引,如果不存在則返回。下面是正則查找的簡(jiǎn)單示例。

最簡(jiǎn)單的查找替換

在Python中查找和替換非常簡(jiǎn)單,如果當(dāng)前對(duì)象是一個(gè)字符串str時(shí),你可以使用該類型提供的find()或者index()方法查找指定的字符,如果能找到則會(huì)返回字符第一次出現(xiàn)的索引,如果不存在則返回-1。

>>> s = "Cat and Dog"
>>> s.find("Dog")
8
>>> s.index("Dog")
8
>>> s.find("Duck")
-1

如果要替換目標(biāo)字符串,用replace()方法就好了。

>>> s = "Cat and Dog"
>>> s.replace("Cat", "Dog")
"Dog and Dog"
通配符查找匹配

當(dāng)然,如果你覺得上面的功能還不能滿足你,你想使用通配符來查找字符串?沒問題!fnmatch這個(gè)庫(kù)就能滿足你的要求,看例子!

>>> s = "Cat and Dog"
>>> import fnmatch
>>> fnmatch.fnmatch(s,"Cat*")
True
>>> fnmatch.fnmatch(s,"C*and*D?")
False
>>> fnmatch.fnmatch(s,"C*and*D*")
True
正則表達(dá)式查找替換

如果你需要查找比較復(fù)雜的字符規(guī)則,正則表達(dá)式是你不二的選擇。下面是正則查找的簡(jiǎn)單示例。

>>> import re
>>> s = "We will fly to Thailand on 2016/10/31"
>>> pattern = r"d+"
>>> re.findall(pattern, s)
["2016", "10", "31"]
>>> re.search(pattern, s)
<_sre.SRE_Match object at 0x03A8FD40>
>>> re.search(pattern, s).group()
"2016"

接下來你可能需要用正則表達(dá)式去替換某些字符,那么你需要了解re.sub()方法,看例子。

>>> s = "I like {color} car."
>>> re.sub(r"{color}","blue",s)
"I like blue car."

>>> s = "We will fly to Thailand on 10/31/2016"
>>> re.sub("(d+)/(d+)/(d+)", r"3-1-2", s)
"We will fly to Thailand on 2016-10-31"

其實(shí)re.sub()遠(yuǎn)比你相像的強(qiáng)大的多。在上面的例子里你可以替換類似于{color}這樣的模板字符,也可以把正則匹配到的所有分組調(diào)換順序,例如第二個(gè)例子一共匹配了3個(gè)分組,然后把第3個(gè)分組放到最前面 r"3-1-2",看明白了嗎?

接下來看另外一個(gè)例子。

s = "Tom is talking to Jerry."
name1 = "Tom"
name2 = "Jerry"

pattern = r"(.*)({0})(.*)({1})(.*)".format(name1, name2)
print re.sub(pattern, r"14325", s)
# Jerry is talking to Tom.

其實(shí)你還可以自定義替換函數(shù),也就是re.sub()的第二個(gè)參數(shù)。

def change_date(m):
    from calendar import month_abbr
    mon_name = month_abbr[int(m.group(1))]
    return "{} {} {}".format(m.group(2), mon_name, m.group(3))

s = "We will fly to Thailand on 10/31/2016"
pattern = r"(d+)/(d+)/(d+)"
print re.sub(pattern, change_date, s)
# We will fly to Thailand on 31 Oct 2016

最后給大家一個(gè)終極版的例子,里面用到了函數(shù)的閉包,著酸爽,你懂的!

def match_case(word):
    def replace(m):
        text = m.group()
        if text.isupper():
            return word.upper()
        elif text.islower():
            return word.lower()
        elif text[0].isupper():
            return word.capitalize()
        else:
            return word
    return replace

s = "LOVE PYTHON, love python, Love Python"
print re.sub("python", match_case("money"), s, flags=re.IGNORECASE)
# LOVE MONEY, love money, Love Money
寫在最后

其實(shí)正則表達(dá)式還有很多玩法,如果你想讓正則和通配符混合著用,一點(diǎn)問題都沒有,因?yàn)?b>fnmatch還有一個(gè)translate()的方法,可以讓你把通配符無痛轉(zhuǎn)換成正則表達(dá)式,你愛怎么玩就怎么玩。

>>> fnmatch.translate("C*and*D*")
"C.*and.*D.*"

關(guān)于作者:Python技術(shù)愛好者,目前從事測(cè)試開發(fā)相關(guān)工作,轉(zhuǎn)載請(qǐng)注明原文出處。

歡迎關(guān)注我的博客 http://betacat.online,你可以到我的公眾號(hào)中去當(dāng)吃瓜群眾。

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

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

相關(guān)文章

  • Python實(shí)用技法第24篇:正則:查找替換文本

    摘要:上一篇文章實(shí)用技法第篇正則文本模式的匹配和查找下一篇文章實(shí)用技法第篇正則以不區(qū)分大小寫的方式對(duì)文本做查找和替換需求 上一篇文章:Python實(shí)用技法第23篇:正則:文本模式的匹配和查找下一篇文章:Python實(shí)用技法第25篇:正則:以不區(qū)分大小寫的方式對(duì)文本做查找和替換 1、需求

    劉永祥 評(píng)論0 收藏0
  • Python實(shí)用技法第25篇:正則:以不區(qū)分大小寫的方式對(duì)文本查找替換

    摘要:上一篇文章實(shí)用技法第篇正則查找和替換文本下一篇文章實(shí)用技法第篇定義實(shí)現(xiàn)最短匹配的正則表達(dá)式需求 上一篇文章:Python實(shí)用技法第24篇:正則:查找和替換文本下一篇文章:Python實(shí)用技法第26篇:定義實(shí)現(xiàn)最短匹配的正則表達(dá)式 1、需求

    darkbug 評(píng)論0 收藏0
  • Python 正則表達(dá)式 re 模塊簡(jiǎn)明筆記

    摘要:假設(shè)現(xiàn)在想把字符串你好,,世界中的中文提取出來,可以這么做你好,,世界注意到,我們?cè)谡齽t表達(dá)式前面加上了兩個(gè)前綴,其中表示使用原始字符串,表示是字符串。本文標(biāo)題為正則表達(dá)式模塊簡(jiǎn)明筆記本文鏈接為參考資料正則表達(dá)式 簡(jiǎn)介 正則表達(dá)式(regular expression)是可以匹配文本片段的模式。最簡(jiǎn)單的正則表達(dá)式就是普通字符串,可以匹配其自身。比如,正則表達(dá)式 hello 可以匹配字符...

    lastSeries 評(píng)論0 收藏0
  • Python的正則表達(dá)式

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

    Juven 評(píng)論0 收藏0
  • PythonPython正則表達(dá)式使用指導(dǎo)

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

    nihao 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

B0B0

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<