如何剥离并将字符串转换为浮点数(小数)?

时间:2019-04-23 20:45:07

标签: python python-3.x string dataframe floating-point

我正在尝试将类似“ 8,191.55 MB”的字符串转换为“ 8191.55” 这样我就可以将其除以1024,以千兆字节为单位。

我尝试输入的代码是“ 819155”,而不是“ 8191.55”。

代码:

TotalRAM = dfHandler['Total Physical Memory'].values[0]
TotalRAM = (int)(''.join(i for i in TotalRAM if i.isdigit()))

5 个答案:

答案 0 :(得分:3)

使用replace()除去逗号值,然后使用split()将其分成几部分。 split函数还将消除开头和结尾的空白。

RAM = ' 8,191.55 MB '
ram_in_MB = float(RAM.replace(',','').split()[0])
print(ram_in_MB)
# 8191.55

答案 1 :(得分:1)

给出您的代码,我会去

TotalRAM = dfHandler['Total Physical Memory'].values[0]
TotalRAM = float(''.join(i for i in TotalRAM if (i.isdigit() or i == ".")))

答案 2 :(得分:1)

TotalRAM = dfHandler['Total Physical Memory'].values[0]    
TotalRAM = float(TotalRAM.replace(',', '').replace(' MB', ''))
TotalRAMGb = TotalRam / 1024

答案 3 :(得分:1)

我将使用正则表达式(re)提取字符串的数字部分。它将获得数字(d +)和小数点(。)。

import re
num = re.findall("(\d+(?:\.\d+)?)", "8,191.55 MB")
print(float(''.join(num)))

结果:

8191.55

答案 4 :(得分:0)

如何更本地化:

from locale import setlocale, LC_NUMERIC, atof
setlocale(LC_NUMERIC, '')

# ...

TotalRAM = dfHandler['Total Physical Memory'].values[0]
TotalRAM = atof(TotalRAM.split()[0])