gpt4 book ai didi

python robuSTLy 将任何带单位的字符串转换为 float

转载 作者:太空宇宙 更新时间:2023-11-03 13:11:31 26 4
gpt4 key购买 nike

我想将任何字符串(带单位的数字)转换为 float 。我有一个值列表,例如

myList = ["$800", "0.1mm", "54.6%", "100,000,000", "89.6", "1,017.16%"]

我想将其转换为:

myList = [800.0, 0.1, 54.6, 100000000.0, 89.6, 1017.16]

我想在不使用多个替换堆叠在一起的情况下执行此操作。replace("%","").replace(",","").replace(...)...

我觉得有一个非常简单的 pythonic 解决方案...

最佳答案

您可以使用 str.translate,但这里最好的方法可能是正则表达式替换,因为您可以否定您想要保留的内容,即数字、点和减号。

import re
myList = ["$800", "0.1mm", "54.6%", "100,000,000", "89.6", "1,017.16%"]

newlist = [float(re.sub("[^0-9.\-]","",x)) for x in myList]

print(newlist)

结果:

[800.0, 0.1, 54.6, 100000000.0, 89.6, 1017.16]

将每个数字转换为 float 。如果没有点,可以改进为转换为 int,例如通过将理解与另一个理解链接起来以区分整数转换的候选者,如下所示:

newlist = [float(y) if "." in y else int(y) for y in (re.sub("[^0-9.\-]","",x) for x in myList)]

(不考虑科学记数法,如果需要,必须添加 y 中的“E”,并且不会被正则表达式过滤掉。

现在的结果是:

[800, 0.1, 54.6, 100000000, 89.6, 1017.16]

关于python robuSTLy 将任何带单位的字符串转换为 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42680951/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com