Geo*_*rge 5 python floating-point
我的输入文件的形式为:
5.0, 1000.0, 100000000000000.0, 115.2712, 230.538, 345.796, 461.0408,
1.053E-09, 1.839E-09, 1.632E-10, 1.959E-12, 4.109, 3.683, 3.586, 3.650
Run Code Online (Sandbox Code Playgroud)
其中每个数字基本上都在一条线上。
我想要做的是读取所有浮点数,然后仅将第 7 列到第 10 列附加到数组中。
这是我写的:
T=[]
with open("test.txt", "r") as file1:
for line in file1.readlines():
f_list = [float(i) for i in line.split(",")]
T.append(float(f_list[7]))
T.append(float(f_list[8]))
T.append(float(f_list[9]))
T.append(float(f_list[10]))
Run Code Online (Sandbox Code Playgroud)
当我运行上面的代码时,我得到:
ValueError: could not convert string to float:
Run Code Online (Sandbox Code Playgroud)
我认为该部分有问题float(i),但我找不到解决方法。
我在这里看到有人遇到类似的问题,但到目前为止我尝试过的修复都没有帮助。任何帮助是极大的赞赏。
不,问题是你的第一行以逗号结尾:
5.0, 1000.0, 100000000000000.0, 115.2712, 230.538, 345.796, 461.0408,
1.053E-09, 1.839E-09, 1.632E-10, 1.959E-12, 4.109, 3.683, 3.586, 3.650
Run Code Online (Sandbox Code Playgroud)
因此,您想要处理仅包含空格的字符串(例如' ')。并且float(' ')失败,因为它不是一个数字(它实际上报告了这一点):
>>> float(' ')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: could not convert string to float:
>>> float('a')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: could not convert string to float: 'a'
Run Code Online (Sandbox Code Playgroud)
但打印时空格是不可见的。
您可以通过向列表理解添加过滤语句来解决它:
T = []
with open("test.txt", "r") as file1:
for line in file1.readlines():
f_list = [float(i) for i in line.split(",") if i.strip()]
T += f_list[7:11]Run Code Online (Sandbox Code Playgroud)
此外,这也行不通,因为没有任何一行有 7-11 个浮点数。所以无论如何你都不会添加这些浮动。
但是您可以使用以下代码:
with open("test.txt", "r") as file1:
f_list = [float(i) for line in file1 for i in line.split(',') if i.strip()]
T = f_list[7:11]
Run Code Online (Sandbox Code Playgroud)
这将导致T等于:
>>> T
[1.053e-09, 1.839e-09, 1.632e-10, 1.959e-12]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
31733 次 |
| 最近记录: |