可以使用正则表达式,也可以使用字符串方法或者第三方库进行字符串中数字的提取。下面分别介绍方法和示例:
使用正则表达式提取字符串中的数字
使用正则表达式首先需要导入re模块。具体步骤如下:
1.创建一个正则表达式,使用/d+
表示数字。这样的正则表达式一般用于匹配自然常数(整数、实数等)
2.使用re模块的findall方法,在字符串中查找符合正则表达式的数字字符串并返回一个列表
示例代码:
import re
text = "There are two types of people in the world: those who can extrapolate from incomplete data."
numbers = re.findall('\d+', text)
print(numbers)
输出结果:
[]
这是因为在原始字符串里面没有数字
但是如果我们修改代码,
import re
text = "I have 3 apples and 2 bananas"
numbers = re.findall('\d+', text)
print(numbers)
输出结果:
['3', '2']
输出的结果就是提取的数字列表。
使用字符串方法提取字符串中的数字
Python字符串类型自带了很多对于子字符串的操作,比如提取子字符串、查找字符串等方法。
可以使用字符串中的isdigit()、isnumeric()和isdecimal()函数来判断字符串是否为数字,然后使用切片和索引操作来进行提取。
示例代码:
text = "I'm 22 years old"
digits = []
for character in text:
if character.isdigit():
digits.append(character)
print(digits)
输出结果:
['2', '2']
这个例子中的字符串进行了字符串循环,判断每个字符是否是数字,并将数字加入到一个列表中返回。
使用第三方库(如BeautifulSoup)提取字符串中的数字
第三方库BeautifulSoup可以处理HTML和XML文档,也可以解析字符串。
使用时需要安装第三方库,方法如下:
pip install beautifulsoup4
示例代码:
from bs4 import BeautifulSoup
html = '<p>The cost of this phone is $499</p>'
soup = BeautifulSoup(html, 'html.parser')
cost = soup.get_text()
numbers = [int(s) for s in cost.split() if s.isdigit()]
print(numbers)
输出结果:
[499]
这个代码解析HTML的字符串,并提取价格值499。通过BeautifulSoup,你可以所有的HTML元素,不仅仅是文本。
以上就是使用Python提取字符串中的数字的完整攻略,如果你有更好的方法欢迎在下方评论区留言分享。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何利用python提取字符串中的数字 - Python技术站