一个列表中存在若干数值(整数和实数)和字母,每个元素都是一个字符串类型,如使用正则表达式解决lst = ['2','3.5','rg','6.7','mnl'],将列表中的数值和字母分别放在两个列表中。
时间: 2023-12-07 20:03:29 浏览: 77
C#winform正则表达式判定字符串类型汇总.rar
可以使用正则表达式模块 re 来判断每个元素是否是数值类型,如果是,将其加入到数字列表中,否则加入到字母列表中。以下是一个示例代码:
```
import re
lst = ['2','3.5','rg','6.7','mnl']
num_lst = []
char_lst = []
for elem in lst:
if re.match(r'^-?\d+\.?\d*$', elem):
num = float(elem)
num_lst.append(num)
else:
char_lst.append(elem)
print("数字列表:", num_lst)
print("字母列表:", char_lst)
```
在上面的示例代码中,我们首先导入了 re 模块。然后,我们定义了一个列表 lst,其中包含了若干不同类型的元素。接下来,我们定义了两个空列表 num_lst 和 char_lst,用于分别存储数字和字母元素。然后,我们使用 for 循环遍历列表 lst 中的每个元素。在循环中,我们使用 re.match 函数和正则表达式判断当前元素是否是数值类型。如果匹配成功,说明当前元素是数值类型,将其转换为浮点数类型并加入到 num_lst 列表中;否则,说明当前元素是字母类型,将其加入到 char_lst 列表中。最后,我们使用 print 函数显示数字列表和字母列表。
上述代码中使用的正则表达式 `r'^-?\d+\.?\d*$'` 匹配了以一个可选的负号开头,后面跟着一位或多位数字,然后是可选的小数部分。这个正则表达式可以匹配整数和浮点数,但不能匹配科学计数法表示的数值。如果要匹配科学计数法表示的数值,需要使用更复杂的正则表达式。
阅读全文