Python匹配数字
在Python中,我们经常需要从字符串中提取数字或者验证一个字符串是否是一个数字。在本文中,我们将讨论如何使用Python来匹配数字。
使用正则表达式匹配数字
正则表达式是一种强大的工具,可以用来匹配特定模式的字符串。在Python中,我们可以使用re模块来进行正则表达式的操作。
匹配整数
下面的代码演示了如何使用正则表达式来匹配一个整数:
import re
pattern = r'^\d+$'
num1 = '12345'
num2 = 'abcde'
if re.match(pattern, num1):
print(num1 + ' 是一个整数')
else:
print(num1 + ' 不是一个整数')
if re.match(pattern, num2):
print(num2 + ' 是一个整数')
else:
print(num2 + ' 不是一个整数')
运行结果:
12345 是一个整数
abcde 不是一个整数
在上面的代码中,我们使用了正则表达式^\d+$
来匹配一个整数。该正则表达式的含义是从字符串的开头^
到结尾$
之间至少有一个数字\d
。
匹配浮点数
如果我们想要匹配一个浮点数,可以使用以下正则表达式:
import re
pattern = r'^\d+\.\d+$'
num1 = '3.14'
num2 = 'abcde'
if re.match(pattern, num1):
print(num1 + ' 是一个浮点数')
else:
print(num1 + ' 不是一个浮点数')
if re.match(pattern, num2):
print(num2 + ' 是一个浮点数')
else:
print(num2 + ' 不是一个浮点数')
运行结果:
3.14 是一个浮点数
abcde 不是一个浮点数
在上面的代码中,我们使用了正则表达式^\d+\.\d+$
来匹配一个浮点数。该正则表达式的含义是字符串开头至少有一个数字,然后是一个小数点,最后是至少一个数字。
匹配科学计数法表示的数字
有时候,我们还需要匹配科学计数法表示的数字,可以使用以下正则表达式:
import re
pattern = r'^[+-]?\d+(\.\d+)?[eE][+-]?\d+$'
num1 = '1.23e4'
num2 = 'abcde'
if re.match(pattern, num1):
print(num1 + ' 是一个科学计数法表示的数字')
else:
print(num1 + ' 不是一个科学计数法表示的数字')
if re.match(pattern, num2):
print(num2 + ' 是一个科学计数法表示的数字')
else:
print(num2 + ' 不是一个科学计数法表示的数字')
运行结果:
1.23e4 是一个科学计数法表示的数字
abcde 不是一个科学计数法表示的数字
在上面的代码中,我们使用了正则表达式^[+-]?\d+(\.\d+)?[eE][+-]?\d+$
来匹配科学计数法表示的数字。该正则表达式的含义是:一个可选的正负号,至少一个数字,可选的小数部分,然后是一个e
或E
,再加上一个可选的正负号,最后是至少一个数字。
使用内置函数判断字符串是否是数字
除了使用正则表达式外,Python还提供了一些内置函数来判断一个字符串是否是数字。以下是一些常用的方法:
使用isdigit()方法
isdigit()
方法可以判断一个字符串是否只包含数字字符。如果字符串只包含数字字符,则返回True;否则返回False。下面是一个示例代码:
num1 = '12345'
num2 = 'abcde'
if num1.isdigit():
print(num1 + ' 只包含数字字符')
else:
print(num1 + ' 不只包含数字字符')
if num2.isdigit():
print(num2 + ' 只包含数字字符')
else:
print(num2 + ' 不只包含数字字符')
运行结果:
12345 只包含数字字符
abcde 不只包含数字字符
使用isnumeric()方法
isnumeric()
方法可以判断一个字符串是否只包含数字字符。如果字符串只包含数字字符,包括中文数字字符,则返回True;否则返回False。下面是一个示例代码:
num1 = '12345'
num2 = '一二三四五'
if num1.isnumeric():
print(num1 + ' 只包含数字字符')
else:
print(num1 + ' 不只包含数字字符')
if num2.isnumeric():
print(num2 + ' 只包含数字字符')
else:
print(num2 + ' 不只包含数字字符')
运行结果:
12345 只包含数字字符
一二三四五 只包含数字字符
使用isdecimal()方法
isdecimal()
方法可以判断一个字符串是否只包含十进制数字字符。如果字符串只包含十进制数字字符,则返回True;否则返回False。下面是一个示例代码:
num1 = '12345'
num2 = '一二三四五'
if num1.isdecimal():
print(num1 + ' 只包含十进制数字字符')
else:
print(num1 + ' 不只包含十进制数字字符')
if num2.isdecimal():
print(num2 + ' 只包含十进制数字字符')
else:
print(num2 + ' 不只包含十进制数字字符')
运行结果:
12345 只包含十进制数字字符
一二三四五 不只包含十进制数字字符
总结
在本文中,我们介绍了如何使用Python来匹配数字。我们通过正则表达式和内置函数的方式,可以方便地验证一个字符串是否是一个数字,或者从字符串中提取数字。