2024-05-13 11:21:02 发布
网友
我有以下清单:
price_list = ['BK55.34', '5.67', '$4.63', '6:70', 'JB787']
我的输出应该是:
price_list = [55.3, 5.67, 4.63, 670, 787]
如何使用正则表达式删除Python中的特殊字符,如“$”和“:”,以及字母,如“BK”和“JB”
试试这个:
print(["".join(re.findall(r"(\d+)?:?(\d+)(\.\d+)?", s)[0]) for s in price_list])
输出:
['55.34', '5.67', '4.63', '670', '787']
您可以使用re的sub方法尝试正则表达式[^0-9.],该方法将删除任何不是数字或点的字符,然后将结果强制转换为点init,然后转换为float,或者转换为int
re
sub
[^0-9.]
float
int
price_list = [float(re.sub("[^0-9.]", "", i)) if "." in i else int(re.sub("[^0-9.]", "", i)) for i in price_list] print(price_list)
或者如果没有带有eval的if条件,则风险更大,因为您必须确保列表中的数据是无害的
eval
price_list = [eval(re.sub("[^0-9.]", "", i)) for i in price_list]
输出
[55.34, 5.67, 4.63, 670, 787]
试试这个:
输出:
您可以使用
re
的sub
方法尝试正则表达式[^0-9.]
,该方法将删除任何不是数字或点的字符,然后将结果强制转换为点init,然后转换为float
,或者转换为int
或者如果没有带有
eval
的if条件,则风险更大,因为您必须确保列表中的数据是无害的输出
相关问题 更多 >
编程相关推荐