我在python中有一个项目列表。
lst=["2.6","2-3","7-8","9","10-11","1 Year","2 Weeks"]我必须删除"-“之后的所有东西
我想要的期望清单
lst=[2.6,2.0,7.0,9.0,10.0,"1 Year","2 Weeks"]我怎样才能做到?
发布于 2022-09-16 22:24:05
有一种使用正则表达式的方法:
import re
def one_elem(elem):
if re.fullmatch('\d+', elem):
return float(elem)
if re.fullmatch('\d+\.\d+', elem):
return float(elem)
if re.fullmatch('\d+-\d+', elem):
return float(elem.split('-')[0])
return elem
lst=["2.6","2-3","7-8","9","10-11","1 Year","2 Weeks"]
lst = [one_elem(elem) for elem in lst]
lst结果:
[2.6, 2.0, 7.0, 9.0, 10.0, '1 Year', '2 Weeks']发布于 2022-09-16 22:30:23
创建一个函数来执行转换:
def convert(value):
try:
return float(value.split('-', 1))
except ValueError:
return value然后使用它:
result = [convert(value) for value in lst]甚至:
result = list(map(convert, lst))发布于 2022-09-16 22:21:39
For split ,这是一个既可以完成split又可以转换为float的列表(我不会在项目中真正使用它,因为它不够明确!):
[float(n) if (n:=s.split('-',1)[0]).replace('.','',1).isdigit() else s for s in lst]注意:需要python≥3.8。
输出:[2.6, 2.0, 7.0, 9.0, 10.0, '1 Year', '2 Weeks']
https://stackoverflow.com/questions/73750712
复制相似问题