从文本文件中提取数据列表

尼玛杰兰

我的问题是如何从有限元程序 (ABAQUS) 给出的文本文件中提取两个数字列表。实际上,X正文中列是timeForce-1force得到这两个列表后,我想做一些数学运算来达到我的目标。

我的文本文件如下: 除了第一行,还有其他空行,但我现在无法确切说出它们的数量。例如,我的文本文件的最后四行是空的,我真的不知道其他哪些行也是空的。

<blank line>
              X               FORCE-1
<blank line>
            0.                 0.
           10.E-03            98.3479E+03
           12.5E-03          122.947E+03
           15.E-03           147.416E+03
           18.75E-03         183.805E+03
           22.5E-03          215.356E+03
           26.25E-03         217.503E+03
           30.E-03           218.764E+03
           33.75E-03         219.724E+03
           37.5E-03          220.503E+03
           43.125E-03        221.938E+03
           51.5625E-03       228.526E+03
           61.5625E-03       233.812E+03
<blank line>
<blank line>
<blank line>
<blank line>

你能告诉我如何在 python 中编写这段代码,它可以找到这个空行并且只提取数字,然后得到两个数字列表,如下所示,例如X(time)

['0.', '10.E-03', '12.5E-03', '15.E-03', '18.75E-03', '22.5E-03', '26.25E-03', '30.E-03', '33.75E-03', '37.5E-03', '43.125E-03', '51.5625E-03', '61.5625E-03']

(一分钟前我问了一个类似的问题,我得到的一些答案毕竟对我没有帮助!)

于连

您必须遍历文件的每一行,创建条件以跳过不相关的行,并操纵其余行以将数据提取到数据结构中。代码注释中的解释:

with open("my_file.txt", "rb") as f: # Open file in read-binary mode
    lines = f.readlines() # Load all lines

x = []
force = []
for line in lines:
    try:
        stripped = line.strip() # Remove extra surrounding whitespace
        if stripped: # This will be false if the line is empty
            x_value, force_value = stripped.split() # Split by the middle whitespace into two values
            # Append data to each list
            # Pass a scientific notation string to float() will make the data more usable
            x.append(float(x_value))
            force.append(float(force_value))
    except ValueError
        pass

print x
print force

编辑:原始答案是切断第一行,但由于您仍然遇到错误,我只是使用try: except:跳过不包含数据值的行发生的事情是将头值Xget 传递给float(),并且由于它无法解析为浮点数,因此会引发ValueError. 由于它在try语句块中,它会查看我们是否ValueErrorexcept块中进行处理我们是,所以它运行此代码而不会引发错误。由于我们只是pass,我们继续迭代到下一行。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章