一、str.contains是什麼
str.contains是Python中一個字元串處理的方法,它可以在一個字元串中查找一個子字元串,如果該子字元串存在於原字元串中,則返回True,否則返回False。
使用方法:
Syntax: Series.str.contains(pat, case=True, flags=0, na=nan, regex=True)
參數:
pat: 要查找的字元串
case: 是否區分大小寫,默認為True(即區分大小寫)
flags: 正則表達式的標記
na: 缺失值(NaN)的表示形式
regex: 是否使用正則表達式,默認為True(即使用正則表達式)
二、str.contains的用途
str.contains可以在文本處理中非常有用。下面簡單介紹其主要用途。
1. 查找字元串
str.contains可以用來查找特定字元串是否存在於另一個字元串中。例如:
import pandas as pd # 創建一個Series s = pd.Series(['apple', 'pear', 'orange', 'banana']) # 查找是否包含apple s.str.contains('apple')
輸出結果:
0 True
1 False
2 False
3 False
dtype: bool
可以看到,該Series中的第一個元素包含了字元串「apple」,因此輸出結果為True。
2. 替換字元串
str.contains還可以用來替換字元串。例如,我們可以使用它來將一個字元串中的所有「-」替換為「_」:
import pandas as pd # 創建一個Series s = pd.Series(['apple-2019', 'pear-2020', 'orange-2021', 'banana-2022']) # 將所有'-'替換為'_' s.str.replace('-', '_')
輸出結果:
0 apple_2019
1 pear_2020
2 orange_2021
3 banana_2022
dtype: object
3. 構造新的Series
str.contains還可以用於構造新的Series。例如,我們可以使用它來構造一個表示每個字元串中是否包含「at」的Series:
import pandas as pd # 創建一個Series s = pd.Series(['cat', 'dog', 'rat', 'bat']) # 構造一個新的Series,表示每個字元串是否包含'at' has_at = s.str.contains('at') print(has_at)
輸出結果:
0 True
1 False
2 True
3 True
dtype: bool
三、str.contains的應用案例
1. 分析電子郵件列表
假設我們有一個電子郵件列表,其中包含每封電子郵件的主題、發件人和收件人。我們想要找出所有與「Python」相關的郵件。我們可以使用str.contains方法來查找包含字元串「Python」的主題或正文的電子郵件。具體方法如下:
import pandas as pd # 創建一個DataFrame df = pd.DataFrame({ 'subject': ['Python request', 'Java request', 'Python error', 'Python success'], 'sender': ['Tom', 'Alex', 'Tom', 'Tom'], 'recipient': ['John', 'Tom', 'John', 'John'] }) # 提取主題、發件人和收件人包含'Python'的郵件 python_emails = df[df['subject'].str.contains('Python') | df['sender'].str.contains('Python') | df['recipient'].str.contains('Python')] print(python_emails)
輸出結果:
subject sender recipient
0 Python request Tom John
2 Python error Tom John
3 Python success Tom John
通過str.contains,我們成功找到了所有與「Python」相關的郵件。
2. 解析網頁內容
假設我們要從一個網頁中抽取所有的URL鏈接。我們可以先使用Python中的requests模塊從網頁中獲取HTML代碼,然後使用str.contains方法篩選出所有的URL鏈接。具體方法如下:
import requests import pandas as pd import re # 獲取網頁HTML代碼 url = 'https://www.baidu.com' response = requests.get(url) html = response.text # 使用正則表達式匹配所有的URL鏈接 pattern = r'https?://(?:[-\w.]|(?:%[\da-fA-F]{2}))+' urls = pd.Series(re.findall(pattern, html)) # 篩選出所有以'http'或'https'開頭的URL鏈接 http_urls = urls[urls.str.contains('^https?')] print(http_urls)
輸出結果:
0 https://www.baidu.com/more/
1 https://www.baidu.com/cache/sethelp/help.html
2 https://www.baidu.com/more/suggestion.html
3 https://voice.baidu.com/act/newpneumonia
4 https://www.baidu.com/duty/
5 https://github.com/WhiteTrefoil/python_note
dtype: object
通過str.contains,我們成功找到了所有以’http’或’https’開頭的URL鏈接。
總結
通過本文,我們了解了str.contains的用法和作用。str.contains是Python中一個方便實用的字元串處理工具,可以在文本處理中幫助我們快速地查找、替換和提取字元串。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/200313.html