一文詳解如何使用Python從字符串中提取數字
前言
在Python中,有時候需要從字符串中提取特定的數字信息,這種操作很常見。例如,從一篇新聞報道中提取新聞發(fā)布日期、從一篇小說中提取章節(jié)編號等。那么,如何使用Python從字符串中提取數字呢?本文將介紹幾種方式。
方法一:使用正則表達式
正則表達式是一種專門用于字符串匹配的工具,在Python中有re模塊支持正則表達式操作。通過正則表達式,可以匹配和提取字符串中的數字。具體實現代碼如下:
import re str1 = '這是一段包含數字的字符串 123456,可以使用正則表達式提取數字' # 定義正則表達式 pattern = r'\d+' # 匹配字符串中的數字 match_obj = re.findall(pattern, str1) # 輸出匹配結果 print(match_obj)
代碼中,使用re.findall
函數匹配字符串中的數字,匹配規(guī)則由正則表達式r’\d+’定義,\d表示匹配數字,+表示匹配前面的1個或多個數字。執(zhí)行上述代碼后,輸出結果為['123456']
。
如果需要提取多組數字,只需要修改正則表達式的定義即可。例如,需要提取下面字符串中的數字:
str2 = 'Python是一門流行的編程語言,目前最新版本是Python 3.10,發(fā)布于2021年10月4日'
該字符串中包含兩組數字,分別是3.10和2021年10月4日??梢允褂胷’\d+.\d+’匹配版本號,使用r’\d{4}年\d{1,2}月\d{1,2}日’匹配日期信息。具體的代碼實現如下:
import re str2 = 'Python是一門流行的編程語言,目前最新版本是Python 3.10,發(fā)布于2021年10月4日' # 定義正則表達式 pattern1 = r'\d+\.\d+' pattern2 = r'\d{4}年\d{1,2}月\d{1,2}日' # 匹配字符串中的數字 match_obj1 = re.findall(pattern1, str2) match_obj2 = re.findall(pattern2, str2) # 輸出匹配結果 print(match_obj1) print(match_obj2)
在上述代碼中,使用了兩個正則表達式,匹配結果存儲在match_obj1
和match_obj2
變量中,輸出結果分別為['3.10']
和['2021年10月4日']
。
方法二:使用字符串方法
除了正則表達式外,Python的字符串還提供了一些常用的方法,可以方便地從字符串中提取數字。下面介紹一些常用的字符串方法。
方法一:isdigit()
isdigit()方法可以判斷一個字符串是否只包含數字字符。如果包含數字字符,則返回True,否則返回False。如果一個字符串只有部分字符為數字,也會返回False。例如,字符串’12345’返回True,字符串’12F45’返回False。具體代碼如下:
str3 = '1969年7月20日 20:17:40' num_str = '' # 提取字符串中的數字 for char in str3: if char.isdigit(): num_str += char # 輸出匹配結果 print(num_str)
在上述代碼中,使用字符串方法isdigit()判斷字符是否為數字,將字符串中的數字提取出來,輸出結果為19697201740
。
方法二:isnumeric()
isnumeric()方法可以判斷一個字符串是否只包含數字字符和數字字符對應的Unicode數值。如果包含數字字符和對應的Unicode數值,則返回True,否則返回False。例如,字符串’12345’和字符串’一二三四五’都返回True,而字符串’12F45’和字符串’$#@!’都返回False。具體代碼如下:
str4 = '一二三四五 12345' num_str = '' # 提取字符串中的數字 for char in str4: if char.isnumeric(): num_str += char # 輸出匹配結果 print(num_str)
執(zhí)行上述代碼后,輸出結果為一二三四五12345
,只提取其中的數字字符。
方法三:split()
split()方法可以將一個字符串按指定字符分割成若干個子字符串,并返回一個列表。例如,可以使用空格、逗號、分號等分割符將一個字符串分割成若干個子字符串。許多時候,字符串中的數字和非數字字符混合在一起,可以使用split()方法將字符串按照非數字字符分割成若干個子字符串,再從中提取數字。具體代碼如下:
str5 = '這個字符串包含數字12、54和97,還有一些其他英文字母' num_list = [] # 將字符串按非數字字符分割成若干個子字符串 str_lst = str5.split(' ') for s in str_lst: if s.isdigit(): num_list.append(int(s)) # 輸出匹配結果 print(num_list)
在上述代碼中,使用split()方法將字符串按照空格分割成若干個子字符串,如果子字符串是數字,則將其轉換成整數并存儲在列表中,輸出結果為[12, 54, 97]
。
方法三:使用第三方庫
Python的第三方庫很多,其中一些庫可以方便地從字符串中提取數字。例如,使用NumPy庫中的函數可以將字符串中的數字轉換成浮點數。具體代碼如下:
import numpy as np str6 = '3.1415926' # 將字符串轉換成浮點數 num_float = np.float(str6) # 輸出匹配結果 print(num_float)
在上述代碼中,使用NumPy庫中的np.float()函數將字符串轉換成浮點數,輸出結果為3.1415926
。
結論
使用Python從字符串中提取數字,可以使用正則表達式、字符串方法或第三方庫。如果字符串中的數字位置和格式較為固定,使用正則表達式可以比較方便地提取數字;如果字符串中數字和非數字字符混合在一起,可以使用字符串方法將字符串分割成若干個子字符串提取數字;如果需要將字符串中的數字轉換成數字類型,也可以使用第三方庫提供的函數快速實現。
到此這篇關于如何使用Python從字符串中提取數字的文章就介紹到這了,更多相關Python字符串提取數字內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Caffe卷積神經網絡視覺層Vision?Layers及參數詳解
這篇文章主要為大家介紹了Caffe卷積神經網絡視覺層Vision?Layers及參數詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-06-06