Python 如何剥离字符串并将其转换为浮点(小数)?
我正在尝试将类似“8191.55MB”的字符串转换为“8191.55” 这样我就可以把它除以1024,得到千兆字节 我正在尝试的代码给了我“819155”而不是“8191.55” 代码:Python 如何剥离字符串并将其转换为浮点(小数)?,python,python-3.x,string,dataframe,floating-point,Python,Python 3.x,String,Dataframe,Floating Point,我正在尝试将类似“8191.55MB”的字符串转换为“8191.55” 这样我就可以把它除以1024,得到千兆字节 我正在尝试的代码给了我“819155”而不是“8191.55” 代码: TotalRAM = dfHandler['Total Physical Memory'].values[0] TotalRAM = (int)(''.join(i for i in TotalRAM if i.isdigit())) 考虑到你的密码,我会选择 TotalRAM = dfHandler['To
TotalRAM = dfHandler['Total Physical Memory'].values[0]
TotalRAM = (int)(''.join(i for i in TotalRAM if i.isdigit()))
考虑到你的密码,我会选择
TotalRAM = dfHandler['Total Physical Memory'].values[0]
TotalRAM = float(''.join(i for i in TotalRAM if (i.isdigit() or i == ".")))
使用replace()
去除逗号值,并使用split()
将其拆分为多个部分。split函数还将去掉前导和尾随空格
RAM = ' 8,191.55 MB '
ram_in_MB = float(RAM.replace(',','').split()[0])
print(ram_in_MB)
# 8191.55
我会使用正则表达式(re)来提取字符串的数字部分。它将得到数字(d+)和小数(.) 结果:
8191.55
更本地化的方法如何:
从区域设置导入setlocale、LC\u NUMERIC、atof
setlocale(LC_数字“”)
# ...
TotalRAM=dfHandler['Total Physical Memory']。值[0]
TotalRAM=atof(TotalRAM.split()[0])
您的join语句正在删除小数位。您可能需要考虑用“’”替换所有非数字字符,然后进行浮点转换。另外,您希望使用浮点,而不是int。int将四舍五入到最接近的整数,并去掉小数点。在这种情况下,您可以绕过它,但一般来说,您可能需要研究正则表达式:您的正则表达式是错误的-没有考虑逗号或没有小数的数字。您不需要逗号,因为浮点不接受逗号。我编辑了我的答案来处理整数值。谢谢
import re
num = re.findall("(\d+(?:\.\d+)?)", "8,191.55 MB")
print(float(''.join(num)))
8191.55