1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        Python判斷字符串是否包含特定子串的7種方法

        共 2073字,需瀏覽 5分鐘

         ·

        2020-09-17 21:44


        在寫代碼的過程中,我們經(jīng)常會遇到這樣一個需求:判斷字符串中是否包含某個關(guān)鍵詞,也就是特定的子字符串。比如從一堆書籍名稱中找出含有“python”的書名。
        判斷兩個字符串相等很簡單,直接?==?就可以了。其實判斷包含子串也非常容易,而且還不止一種方法。下面我們就給大家分享 7 種可以達到此效果的方法:

        1、使用 in 和 not in

        innot in在 Python 中是很常用的關(guān)鍵字,我們將它們歸類為成員運算符。

        使用這兩個成員運算符,可以很讓我們很直觀清晰的判斷一個對象是否在另一個對象中,示例如下:

        >>>?"llo"?in?"hello,?python"
        True
        >>>
        >>>?"lol"?in?"hello,?python"
        False

        2、使用 find 方法

        使用 字符串 對象的 find 方法,如果有找到子串,就可以返回指定子串在字符串中的出現(xiàn)位置,如果沒有找到,就返回-1

        >>>?"hello,?python".find("llo")?!=?-1
        True
        >>>?"hello,?python".find("lol")?!=?-1
        False
        >>

        3、使用 index 方法

        字符串對象有一個 index 方法,可以返回指定子串在該字符串中第一次出現(xiàn)的索引,如果沒有找到會拋出異常,因此使用時需要注意捕獲。

        def?is_in(full_str,?sub_str):
        ????try:
        ????????full_str.index(sub_str)
        ????????return?True
        ????except?ValueError:
        ????????return?False

        print(is_in("hello,?python",?"llo"))??#?True
        print(is_in("hello,?python",?"lol"))??#?False

        4、使用 count 方法

        利用和 index 這種曲線救國的思路,同樣我們可以使用 count 的方法來判斷。

        只要判斷結(jié)果大于 0 就說明子串存在于字符串中。

        def?is_in(full_str,?sub_str):
        ????return?full_str.count(sub_str)?>?0

        print(is_in("hello,?python",?"llo"))??#?True
        print(is_in("hello,?python",?"lol"))??#?False

        5、通過魔法方法

        在第一種方法中,我們使用 in 和 not in 判斷一個子串是否存在于另一個字符中,實際上當(dāng)你使用 in 和 not in 時,Python 解釋器會先去檢查該對象是否有__contains__魔法方法。

        若有就執(zhí)行它,若沒有,Python 就自動會迭代整個序列,只要找到了需要的一項就返回 True 。

        示例如下;

        >>>?"hello,?python".__contains__("llo")
        True
        >>>
        >>>?"hello,?python".__contains__("lol")
        False
        >>>

        這個用法與使用 in 和 not in 沒有區(qū)別,但不排除有人會特意寫成這樣來增加代碼的理解難度。

        6、借助 operator

        operator模塊是python中內(nèi)置的操作符函數(shù)接口,它定義了一些算術(shù)和比較內(nèi)置操作的函數(shù)。operator模塊是用c實現(xiàn)的,所以執(zhí)行速度比 python 代碼快。

        在 operator 中有一個方法contains可以很方便地判斷子串是否在字符串中。

        >>>?import?operator
        >>>
        >>>?operator.contains("hello,?python",?"llo")
        True
        >>>?operator.contains("hello,?python",?"lol")
        False
        >>>?

        7、使用正則匹配

        說到查找功能,那正則絕對可以說是專業(yè)的工具,多復(fù)雜的查找規(guī)則,都能滿足你。

        對于判斷字符串是否存在于另一個字符串中的這個需求,使用正則簡直就是大材小用。

        import?re

        def?is_in(full_str,?sub_str):
        ????if?re.findall(sub_str,?full_str):
        ????????return?True
        ????else:
        ????????return?False

        print(is_in("hello,?python",?"llo"))??#?True
        print(is_in("hello,?python",?"lol"))??#?False

        你平常會用哪種方法呢?或者你還有其他寫法?歡迎在留言中給出。


        作者:寫代碼的明哥

        來源:Python編程時光




        _往期文章推薦_

        超詳細Python字符串用法大全




        瀏覽 87
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            免费无码成人片www | 色婷婷AV一区二区三区软件 | 青青操成人娱乐网站 | 乱伦熟妇| 国产对白农村老女人性视频对话 | cao死你个小sao货湿透了视频 | 操逼网站av| 国内精品视频在线 | 免费男人下部进女人下部视频 | 日本大尺度吻视频 |