一、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-hant/n/200313.html
微信掃一掃
支付寶掃一掃