Python匹配数字,有正数,负数,小数,分数(1/3),百分数(45%),例如“18,9,-7,8.5,1/5,65%”
时间: 2024-12-23 15:20:01 浏览: 7
在Python中,处理各种类型的数字包括正数、负数、小数、分数(如`1/3`形式)、百分数(如`45%`形式)通常需要先确保输入字符串的有效性,然后再转换成对应的数值类型。Python的内置模块`re`(Regular Expression,正则表达式)可以帮助我们识别和解析这些格式。
首先,我们可以尝试使用正则表达式来匹配这些格式。以下是一个基本的示例:
```python
import re
def parse_numbers(text):
pattern = r"[-+]?\d*\.?\d+|" + r"(\d+)/(\d+)" + "|" + r"\d+%"
matches = re.findall(pattern, text)
parsed_numbers = []
for match in matches:
if '/' in match:
numerator, denominator = map(int, match.split('/'))
fraction = Fraction(numerator, denominator) # 导入Fraction模块处理分数
elif '%' in match:
number = float(match[:-1]) / 100 # 百分比转换为浮点数
else:
number = float(match) # 小数或整数直接转换
parsed_numbers.append(number)
return parsed_numbers
text_input = "18,9,-7,8.5,1/5,65%"
numbers = parse_numbers(text_input)
print(numbers)
```
这段代码首先定义了一个正则表达式模式,用于匹配整数、小数、分数和百分数。然后,它查找文本中所有匹配的部分,并对每个匹配项进行适当的处理。
注意这里使用了第三方库`fractions.Fraction`来处理分数。如果没有安装这个库,你需要先安装(`pip install fractions`),或者使用其他方式处理分数。
阅读全文