python 子串是否在字符串中_python七種方法判斷字符串是否包含子串

1. 使用 in 和 not in

in 和 not in 在 Python 中是很常用的關鍵字,我們將它們歸類為 成員運算符。

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

>>> "llo" in "hello, python"

True

>>>

>>> "lol" in "hello, python"

False

2. 使用 find 方法

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

>>> "hello, python".find("llo") != -1

True

>>> "hello, python".find("lol") != -1

False

>>

3. 使用 index 方法

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

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 的方法來判斷。

只要判斷結果大于 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 判斷一個子串是否存在于另一個字符中,實際上當你使用 in 和 not in 時,Python 解釋器會先去檢查該對象是否有 __contains__ 魔法方法。

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

示例如下:

>>> "hello, python".__contains__("llo")

True

>>>

>>> "hello, python".__contains__("lol")

False

>>>

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

6. 借助 operator

operator模塊是python中內置的操作符函數接口,它定義了一些算術和比較內置操作的函數。operator模塊是用c實現的,所以執行速度比 python 代碼快。

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

>>> import operator

>>>

>>> operator.contains("hello, python", "llo")

True

>>> operator.contains("hello, python", "lol")

False

>>>

7. 使用正則匹配

說到查找功能,那正則絕對可以說是專業的工具,多復雜的查找規則,都能滿足你。

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

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 字符串的資料請關注我們其它相關文章!

本文標題: python七種方法判斷字符串是否包含子串

本文地址: http://www.cppcns.com/jiaoben/python/335386.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/374059.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/374059.shtml
英文地址,請注明出處:http://en.pswp.cn/news/374059.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

NYOJ 8 一種排序

一種排序 時間限制:3000 ms | 內存限制:65535 KB難度:3描述現在有很多長方形,每一個長方形都有一個編號,這個編號可以重復;還知道這個長方形的寬和長,編號、長、寬都是整數;現在要…

css3中的background

對background的兩種運用:一是background中的線性漸變,background: linear-gradient(to bottom,#0e7bef,#0d73da);這個是對背景顏色從上到下的一種線性漸變(linear-gradient),兩個顏色參數是從第一個顏色參數漸變到第二…

Oracle JRockit Mission Control 4.1發布

Oracle發布了以前的僅JRockit專用工具Mission Control Suite(JRMC)的新版本。 4.1版本是次要版本升級,直接遵循4.0.1(該版本發布于2010年中期)。 但是,即使版本號表明是次要的升級,您仍然可以在…

pe安裝usb3.0驅動_電腦店U盤啟動盤制作工具下載安裝須知

電腦店U盤啟動盤制作工具集成最全面的硬件驅動,精心挑選的系統維護工具,加上獨有人性化的設計,具備較強的兼容性、穩定性和安全性。能夠完美兼容臺式機、品牌機及筆記本等新老機型,且安全無毒,電腦店一鍵U盤啟動盤制作…

Webwork【02】前端OGNL試練

1.OGNL 出現的意義 在mvc中,數據是在各個層次之間進行流轉是一個不爭的事實。而這種流轉,也就會面臨一些困境,這些困境,是由于數據在不同世界中的表現形式不同而造成的: a. 數據在頁面上是一個扁平的,不帶數…

python ATM購物程序

需求: 模擬實現一個ATM 購物商城程序 額度 15000或自定義實現購物商城,買東西加入 購物車,調用信用卡接口結賬可以提現,手續費5%每月22號出賬單,每月10號為還款日,過期未還,按欠款總額 萬分之5…

NYOJ 10 skiing

skiing 時間限制:3000 ms | 內存限制:65535 KB難度:5描述Michael喜歡滑雪百這并不奇怪, 因為滑雪的確很刺激。可是為了獲得速度,滑的區域必須向下傾斜,而且當你滑到坡底,你不得不再次走上坡或…

Spring的REST服務發現性,第5部分

這是有關使用Spring 3.1和Spring Security 3.1和基于Java的配置來建立安全的RESTful Web Service的系列文章的第五篇。 上一篇文章介紹了RESTful服務HATEOAS的可發現性的概念,然后介紹了一些由測試驅動的實際方案。 本文將重點介紹可發現性的實際實現以及使用Spring…

postman使用_postman如何使用集合斷言?

在postman中,大家都使用過斷言,但是我們使用的斷言都是針對每一個接口或者是每一個用例添加的,那么是否有可以同時對多個用例或接口添加斷言呢 ? 答案是肯定有的。那么接下來我就帶領大家認識下Postman中的批量斷言,也…

紀念我的leetcode開門之旅

15.12.3在朋友的建議下開始了leetcode之旅,上面的題目先撿簡單的刷吧。。。轉載于:https://www.cnblogs.com/thewaytomakemiracle/p/5016825.html

NYOJ 16 矩形嵌套

矩形嵌套 時間限制&#xff1a;3000 ms | 內存限制&#xff1a;65535 KB難度&#xff1a;4描述有n個矩形&#xff0c;每個矩形可以用a,b來描述&#xff0c;表示長和寬。矩形X(a,b)可以嵌套在矩形Y(c,d)中當且僅當a<c,b<d或者b<c,a<d&#xff08;相當于旋轉X90度&…

沉思濫用:“強力使用,破壞濫用”

英國前首相本杰明迪斯雷利&#xff08;Benjamin Disraeli&#xff09;曾有一個古老的說法&#xff0c;說謊言分為三種&#xff1a;“謊言&#xff0c;該死的謊言和統計數據”。 這里的暗示是統計數據很容易彌補它們是不可靠的。 但是&#xff0c;統計學在經驗科學中得到了廣泛的…

centos和ubuntu下使用cron設置定時任務

1.啟動cron工具[ps:使用root權限] centos啟動cron兩種方式 a) /etc/init.d/crond start b) service crond start ubuntu啟動cron兩種方式 a) /etc/init.d/cron start b) service cron start(推薦) 2.添加定時任務[每個整點執行ls命令] centos crontab -e命令打開文件 添加一行:…

算法與數據結構(一)

這里的許多資源&#xff0c;有時間可用多看看&#xff0c;寫一下。 http://download.csdn.net/album/detail/3249/2 這個哥們的博客還不錯&#xff1a;http://u.cxyblog.com/2/articles-3.html轉載于:https://www.cnblogs.com/oxspirt/p/5805409.html

protected訪問權限_權限修飾符 /重寫

一 權限修飾符 private內容不能被繼承類:只有public / default 可以修飾 ,且default 默認出現protected訪問權限1.同包下的類2.不同包的子類,只能通過子父類關系訪問,只有子類中才可以使用.權限修飾符只能修飾成員,成員修飾符(成員變量|成員方法)二 重寫重寫和重載的區別:(都指…

NYOJ 26 孿生素數問題

孿生素數問題 時間限制&#xff1a;3000ms | 內存限制&#xff1a;65535KB難度&#xff1a;3描述寫一個程序&#xff0c;找出給出素數范圍內的所有孿生素數的組數。一般來說&#xff0c;孿生素數就是指兩個素數距離為2&#xff0c;近的不能再近的相鄰素數。有些童鞋一看到題就…

python importlib_importlib --- import 的實現 — Python 3.10.0a2 文檔

3.7 新版功能.這個模塊使得Python的導入系統提供了訪問*包*內的*資源*的功能。如果能夠導入一個包&#xff0c;那么就能夠訪問那個包里面的資源。資源可以以二進制或文本模式方式被打開或讀取。資源非常類似于目錄內部的文件&#xff0c;要牢記的是這僅僅是一個比喻。資源和包不…

原生js使用forEach()與jquery使用each遍歷數組,return false 的區別

原生js使用forEach()與jquery使用each()遍歷數組&#xff0c;return false 的區別&#xff1a; 1、使用each()遍歷數組a,如下&#xff1a; var a[20,21,22,23,24];$.each(a, function(index,val) {console.log(indexindex);if(index2){return false;}console.log(valval);}); …

配置Java EE應用程序或“將Bien付諸實踐”

過去&#xff0c;有關應用程序配置的討論很多。 我不知道誰拉開了辯論的序幕&#xff0c;但是最基礎的閱讀&#xff08;著眼于未來的Java EE 7及更高版本&#xff09;是Antonio Goncalves的帖子[辯論] – Java EE 7中的配置如何 &#xff1f; 事實是&#xff0c;使用香草Java E…

HTML5 Canvas入門

HTML5的canvas&#xff08;畫布&#xff09;元素使用JavaScript在網頁上繪制圖像。下面以一個簡單例子及其效果圖&#xff08;圖1&#xff09;開始&#xff1a; <!DOCTYPE HTML> <html><head><style type"text/css"> canvas{border:dashed 2…