Python從字符串中提取數(shù)字實踐
一、前言
網(wǎng)上看了一圈沒找到很完整的提取過程,自己剛好有時間總結(jié)一下。
二、使用正則表達(dá)式
正則表達(dá)式是一種專門用于字符串匹配的工具,在Python中有re模塊支持正則表達(dá)式操作。通過正則表達(dá)式,可以匹配和提取字符串中的數(shù)字。
具體實現(xiàn)代碼如下:
import re str1 = '這是一段包含數(shù)字的字符串 123456,可以使用正則表達(dá)式提取數(shù)字' # 定義正則表達(dá)式 pattern = r'\d+' # 匹配字符串中的數(shù)字 match_obj = re.findall(pattern, str1) # 輸出匹配結(jié)果 print(match_obj)
代碼中,使用re.findall函數(shù)匹配字符串中的數(shù)字,匹配規(guī)則由正則表達(dá)式r’\d+’定義,\d表示匹配數(shù)字,+表示匹配前面的1個或多個數(shù)字。執(zhí)行上述代碼后,輸出結(jié)果為[‘123456’]。
如果需要提取多組數(shù)字,只需要修改正則表達(dá)式的定義即可。
例如,需要提取下面字符串中的數(shù)字:
str2 = 'Python是一門流行的編程語言,目前最新版本是Python 3.10,發(fā)布于2021年10月4日'
該字符串中包含兩組數(shù)字,分別是3.10和2021年10月4日??梢允褂胷’\d+.\d+’匹配版本號,使用r’\d{4}年\d{1,2}月\d{1,2}日’匹配日期信息。
具體的代碼實現(xiàn)如下:
import re
str2 = 'Python是一門流行的編程語言,目前最新版本是Python 3.10,發(fā)布于2021年10月4日'
# 定義正則表達(dá)式
pattern1 = r'\d+\.\d+'
pattern2 = r'\d{4}年\d{1,2}月\d{1,2}日'
# 匹配字符串中的數(shù)字
match_obj1 = re.findall(pattern1, str2)
match_obj2 = re.findall(pattern2, str2)
# 輸出匹配結(jié)果
print(match_obj1)
print(match_obj2)
在上述代碼中,使用了兩個正則表達(dá)式,匹配結(jié)果存儲在match_obj1和match_obj2變量中,輸出結(jié)果分別為[‘3.10’]和[‘2021年10月4日’]。
三、使用字符串方法
除了正則表達(dá)式外,Python的字符串還提供了一些常用的方法,可以方便地從字符串中提取數(shù)字。
下面介紹一些常用的字符串方法。
1、isdigit()
isdigit()方法可以判斷一個字符串是否只包含數(shù)字字符。如果包含數(shù)字字符,則返回True,否則返回False。如果一個字符串只有部分字符為數(shù)字,也會返回False。
例如,字符串’12345’返回True,字符串’12F45’返回False。具體代碼如下:
str3 = '1969年7月20日 20:17:40'
num_str = ''
# 提取字符串中的數(shù)字
for char in str3:
if char.isdigit():
num_str += char
# 輸出匹配結(jié)果
print(num_str)
在上述代碼中,使用字符串方法isdigit()判斷字符是否為數(shù)字,將字符串中的數(shù)字提取出來,輸出結(jié)果為19697201740。
2、isnumeric()
isnumeric()方法可以判斷一個字符串是否只包含數(shù)字字符和數(shù)字字符對應(yīng)的Unicode數(shù)值。如果包含數(shù)字字符和對應(yīng)的Unicode數(shù)值,則返回True,否則返回False。
例如,字符串’12345’和字符串’一二三四五’都返回True,而字符串’12F45’和字符串’$#@!’都返回False。具體代碼如下:
str4 = '一二三四五 12345'
num_str = ''
# 提取字符串中的數(shù)字
for char in str4:
if char.isnumeric():
num_str += char
# 輸出匹配結(jié)果
print(num_str)
執(zhí)行上述代碼后,輸出結(jié)果為一二三四五12345,只提取其中的數(shù)字字符。
3、split()
split()方法可以將一個字符串按指定字符分割成若干個子字符串,并返回一個列表。
例如,可以使用空格、逗號、分號等分割符將一個字符串分割成若干個子字符串。許多時候,字符串中的數(shù)字和非數(shù)字字符混合在一起,可以使用split()方法將字符串按照非數(shù)字字符分割成若干個子字符串,再從中提取數(shù)字。
具體代碼如下:
str5 = '這個字符串包含數(shù)字12、54和97,還有一些其他英文字母'
num_list = []
# 將字符串按非數(shù)字字符分割成若干個子字符串
str_lst = str5.split(' ')
for s in str_lst:
if s.isdigit():
num_list.append(int(s))
# 輸出匹配結(jié)果
print(num_list)
在上述代碼中,使用split()方法將字符串按照空格分割成若干個子字符串,如果子字符串是數(shù)字,則將其轉(zhuǎn)換成整數(shù)并存儲在列表中,輸出結(jié)果為[12, 54, 97]。
四、使用第三方庫
Python的第三方庫很多,其中一些庫可以方便地從字符串中提取數(shù)字。
例如,使用NumPy庫中的函數(shù)可以將字符串中的數(shù)字轉(zhuǎn)換成浮點數(shù)。
具體代碼如下:
import numpy as np str6 = '3.1415926' # 將字符串轉(zhuǎn)換成浮點數(shù) num_float = np.float(str6) # 輸出匹配結(jié)果 print(num_float)
在上述代碼中,使用NumPy庫中的np.float()函數(shù)將字符串轉(zhuǎn)換成浮點數(shù),輸出結(jié)果為3.1415926。
五、總結(jié)
在Python中,有時候需要從字符串中提取特定的數(shù)字信息,這種操作很常見。
例如,從一篇新聞報道中提取新聞發(fā)布日期、從一篇小說中提取章節(jié)編號等。
使用Python從字符串中提取數(shù)字,可以使用正則表達(dá)式、字符串方法或第三方庫。
如果字符串中的數(shù)字位置和格式較為固定,使用正則表達(dá)式可以比較方便地提取數(shù)字;如果字符串中數(shù)字和非數(shù)字字符混合在一起,可以使用字符串方法將字符串分割成若干個子字符串提取數(shù)字;如果需要將字符串中的數(shù)字轉(zhuǎn)換成數(shù)字類型,也可以使用第三方庫提供的函數(shù)快速實現(xiàn)。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
詳解10個可以快速用Python進(jìn)行數(shù)據(jù)分析的小技巧
這篇文章主要介紹了詳解10個可以快速用Python進(jìn)行數(shù)據(jù)分析的小技巧,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06
python借助ChatGPT讀取.env實現(xiàn)文件配置隔離保障私有數(shù)據(jù)安全
這篇文章主要為大家介紹了python讀取.env實現(xiàn)文件配置隔離保障私有數(shù)據(jù)安全,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03
通過Python腳本+Jenkins實現(xiàn)項目重啟
Jenkins是一個流行的開源自動化服務(wù)器,用于快速構(gòu)建、測試和部署軟件,本文主要介紹了通過Python腳本+Jenkins實現(xiàn)項目重啟,具有一定的參考價值,感興趣的可以了解一下2023-10-10
Python實現(xiàn)批量提取Word文檔表格數(shù)據(jù)
在大數(shù)據(jù)處理與信息抽取領(lǐng)域中,Word文檔是各類機(jī)構(gòu)和個人普遍采用的一種信息存儲格式,本文將介紹如何使用Python實現(xiàn)對Word文檔中表格的提取,感興趣的可以了解下2024-03-03
解決python selenium3啟動不了firefox的問題
今天小編就為大家分享一篇解決python selenium3啟動不了firefox的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-10-10
在Tensorflow中實現(xiàn)梯度下降法更新參數(shù)值
今天小編就為大家分享一篇在Tensorflow中實現(xiàn)梯度下降法更新參數(shù)值,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01
python圖片驗證碼識別最新模塊muggle_ocr的示例代碼
這篇文章主要介紹了python圖片驗證碼識別最新模塊muggle_ocr的相關(guān)知識,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-07-07
python OpenCV的imread不能讀取中文路徑問題及解決
這篇文章主要介紹了python OpenCV的imread不能讀取中文路徑問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-07-07

