3 回答
TA贡献1790条经验 获得超9个赞
这里有几点:
使用
re.search
sincere.match
仅在字符串 start 处搜索匹配,转义点,因为它是一个特殊的正则表达式元字符
您仅使用 过滤列表
filter(...)
,不提取值。如果您打算找到第
digit+.digit+
一次出现,您可以使用正则表达式\d+\.\d+
如果您的项目都是用于获取数字的
string number
格式s.split()[-1]
,则不需要正则表达式
利用
dat_list = [float(dat_re.search(x).group()) for x in l if dat_re.search(x)]
或者,如果格式是固定的
dat_list = [float(x.split()[-1]) for x in l]
请参阅Python 演示:
import re
l = ['string 23.3', 'NumberDescription 33.35']
dat_re = re.compile(r'\d+\.\d+')
dat_list = [float(dat_re.search(x).group()) for x in l if dat_re.search(x)]
print(dat_list)
# => [23.3, 33.35]
print([float(x.split()[-1]) for x in l])
# => [23.3, 33.35]
TA贡献1873条经验 获得超9个赞
直接从列表中提取浮点值:
import re
l = ['string 23.3', 'string 33.35', 'string 44.55']
dat_list = list(float(match.group(1)) for match in map(re.compile('(\d+\.\d+)').search, l))
print(dat_list)
输出:
[23.3, 33.35, 44.55]
TA贡献1845条经验 获得超8个赞
list_strings=['1','2','3']
for i in list_strings:
num_list.append(int(i))
or
list_num = [int(x) for x in list_strings]
检查此示例代码一次。
添加回答
举报