为了账号安全,请及时绑定邮箱和手机立即绑定

我想从带有字符串的列表中提取数字

我想从带有字符串的列表中提取数字

四季花海 2022-06-07 17:53:51
我有一个包含字符串的列表:list = ['string', 'string', 'string', ...]这些字符串就像:'NumberDescription 33.3'我只想提取没有'NumberDescription' part.我已经尝试使用正则表达式和使用 re.match 的过滤器功能。但这会导致一个空列表。dat_re = re.compile(r'\d+.\d')  dat_list = list(filter(dat_re.match, list))正如我所说,我只想要列表中的数字,在最后一步中,我想将列表中的元素转换为浮点数。
查看完整描述

3 回答

?
富国沪深

TA贡献1790条经验 获得超9个赞

这里有几点:

  1. 使用re.searchsincere.match仅在字符串 start 处搜索匹配

  2. 转义点,因为它是一个特殊的正则表达式元字符

  3. 您仅使用 过滤列表filter(...),不提取值。

  4. 如果您打算找到第digit+.digit+一次出现,您可以使用正则表达式\d+\.\d+

  5. 如果您的项目都是用于获取数字的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]


查看完整回答
反对 回复 2022-06-07
?
眼眸繁星

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]


查看完整回答
反对 回复 2022-06-07
?
精慕HU

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]

检查此示例代码一次。


查看完整回答
反对 回复 2022-06-07
  • 3 回答
  • 0 关注
  • 177 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信