Hey小伙伴们,今天来聊聊一个特别实用的小技巧——如何在Python中从字符串里提取数字,是不是有时候看到一大串文字,里面夹杂着数字,想要把它们单独拿出来?别急,我来教你几招,保证简单又好用!
我们得知道,Python里有一个超级强大的库,叫做re,它可以帮助我们进行正则表达式的操作,正则表达式听起来可能有点复杂,但其实它就像是给字符串设定规则,然后根据这些规则去匹配和提取信息,在提取数字这件事上,正则表达式简直就是神器!
基础提取
如果你想要提取字符串中的所有数字,可以用下面这个简单的正则表达式:
import re text = "今天的天气是23度,预计明天会降到18度。" numbers = re.findall(r'd+', text) print(numbers) # 输出: ['23', '18']
这里的d+表示匹配一个或多个数字。findall函数会返回所有匹配的结果,作为一个列表。
提取特定格式的数字
我们可能需要提取特定格式的数字,比如电话号码或者日期,这时候,正则表达式就可以大显身手了,提取电话号码:
text = "我的电话号码是123-456-7890。"
phone_numbers = re.findall(r'd{3}-d{3}-d{4}', text)
print(phone_numbers) # 输出: ['123-456-7890']这里的d{3}表示匹配三个数字,是字面意义上的破折号,d{4}表示匹配四个数字。
提取带有小数点的数字
如果你的字符串中包含小数,比如价格或者测量值,你可以这样提取:
text = "这个商品的价格是99.99元。" prices = re.findall(r'd+.d+', text) print(prices) # 输出: ['99.99']
这里的d+.d+表示匹配一个或多个数字,后面跟着一个点.(记得在正则表达式中点号.需要转义,所以用.),然后是另一个一个或多个数字。
忽略大小写
数字可能是以字母开头的,2nd”或者“A1”,如果你想要提取这样的数字,可以忽略大小写:
text = "这是2nd次尝试,结果在A1区域。" numbers = re.findall(r'd+', text, re.IGNORECASE) print(numbers) # 输出: ['2', '1']
这里的re.IGNORECASE参数让正则表达式忽略大小写。
提取负数
如果你需要提取负数,可以稍微修改一下正则表达式:
text = "损失是-20元,收入是30元。" numbers = re.findall(r'-?d+', text) print(numbers) # 输出: ['-20', '30']
这里的-?表示匹配零个或一个负号。
提取科学记数法
对于科学记数法,1.23e4”,我们也可以用正则表达式来提取:
text = "这个值是1.23e4。" scientific_numbers = re.findall(r'd+.d+e[+-]?d+', text) print(scientific_numbers) # 输出: ['1.23e4']
这里的e[+-]?表示匹配一个e字符,后面跟着一个可选的正号或负号。
通过这些方法,你可以灵活地从字符串中提取出各种格式的数字,正则表达式的强大之处在于它的灵活性和强大的匹配能力,只要了基本的规则,就能应对各种复杂的场景,希望这些小技巧能帮助你在处理文本数据时更加得心应手!如果你有其他问题或者想要了解更多,随时欢迎交流哦!



还没有评论,来说两句吧...