Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用正则表达式PYTHON清理列表_Python_Regex - Fatal编程技术网

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

使用正则表达式PYTHON清理列表,python,regex,Python,Regex,我有以下清单: price_list = ['BK55.34', '5.67', '$4.63', '6:70', 'JB787'] 我的输出应该是: price_list = [55.3, 5.67, 4.63, 670, 787] 如何使用正则表达式删除Python中的特殊字符,如“$”和“:”,以及字母,如“BK”和“JB”?您可以尝试使用正则表达式[^0-9]使用re的sub方法,该方法将删除任何不是数字或点的字符,然后将结果强制转换为点init,然后转换为浮点,否则转换为int p

我有以下清单:

price_list = ['BK55.34', '5.67', '$4.63', '6:70', 'JB787']
我的输出应该是:

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

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

您可以尝试使用正则表达式
[^0-9]
使用
re
sub
方法,该方法将删除任何不是数字或点的字符,然后将结果强制转换为点init,然后转换为
浮点
,否则转换为
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]
试试这个:

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('[^\d.]','',a)用于价目表]
?您尝试过使用字符串方法吗?类似于[code>[float(''.join(s表示i中的s,如果s.isnumeric()或s=='))表示价格表中的i]应该可以简化为:
price\u list=[float(re.sub([^0-9.]”,i)),如果“.”表示价格表中的i(re.sub(“[^0-9.]”,i)),“,i))表示价格表中的i]
`Tnx将使用它。