使用正则表达式PYTHON清理列表

2024-05-13 11:21:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下清单:

price_list = ['BK55.34', '5.67', '$4.63', '6:70', 'JB787']

我的输出应该是:

price_list = [55.3, 5.67, 4.63, 670, 787]

如何使用正则表达式删除Python中的特殊字符,如“$”和“:”,以及字母,如“BK”和“JB”


Tags: 字母pricelistbk特殊字符jbjb787
2条回答

试试这个:

print(["".join(re.findall(r"(\d+)?:?(\d+)(\.\d+)?", s)[0]) for s in price_list])

输出:

['55.34', '5.67', '4.63', '670', '787']

您可以使用resub方法尝试正则表达式[^0-9.],该方法将删除任何不是数字或点的字符,然后将结果强制转换为点init,然后转换为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条件,则风险更大,因为您必须确保列表中的数据是无害的

price_list = [eval(re.sub("[^0-9.]", "", i)) for i in price_list]

输出

[55.34, 5.67, 4.63, 670, 787]

相关问题 更多 >