Python将字符串转换为浮点数。

5

我有一个类似于这样的字符串:

a = "'92.345'\r\n\r\n"
a.strip()

当我尝试使用np.float(a)或者float(a)将其转换为浮点数时,我会得到
*** Value error: could not convert string to float: '92.345'

我该如何将它干净地转换成浮点数?


当将\r\n转换为浮点数时,您认为会变成什么? - TidB
值得注意的是,a.strip()本身并没有任何作用。你必须对结果进行操作,例如 a = a.strip()x = float(a.strip()) 或其他操作。 - Kevin
你如何获取这样的字符串? - Daniel
@Kevin 抱歉,我确实做了那件事,只是没有在这里发布。 - user308827
@Daniel,从netcdf文件中获取数据。使用nco工具进行读取。在Windows中通过子进程调用nco工具。 - user308827
显示剩余2条评论
4个回答

7

您需要剥离字符串以去除空格和一个引号'

>>> float(a.strip().strip("'"))
92.345

正如@Martijn Pieters在评论中所说,您可以使用a.strip("\r\n\t '")将其减少为一个strip调用。


3
或者使用 a.strip("\r\n\t '") 来将其简化为 一个 strip 调用。 - Martijn Pieters

2
您也可以使用str.translate
print(float(a.translate(None,"\r\n'")))

1
尝试对字符串进行切片,提取其中的数字部分:
a = "'92.345'\r\n\r\n"
x = float(a[1:6])

唯一的问题是它不能一遍又一遍地做,你需要事先知道你要切割什么。 - Zizouz212

1

移除除数字和点以外的所有内容

>>> a = "'92.345123'\r\n\r\n"
>>> float(re.sub(r'[^0-9\.]', '', a))
92.345123

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接