【发布时间】:2013-03-22 20:25:18
【问题描述】:
我有一个包含如下列的数据文件
BBP1 0.000000 -0.150000 2.033000 0.00 -0.150 1.77
并且各个列由不同数量的空格分隔。
我的目标是读入这些行,对几行进行一些数学运算,例如将第 4 列乘以 .95,然后将它们写到一个新文件中。新文件应该看起来像原来的文件,除了我修改的值。
我的方法是将行作为列表项读取。然后我会在我感兴趣的那些行上使用split(),这将为我提供一个包含各个列值的子列表。然后我进行修改,join() 列在一起并将列表中的行写入一个新的文本文件。
问题是我有不同数量的空格。我不知道如何以我阅读它们的相同方式将它们介绍回来。我能想到的唯一方法是在拆分它们之前计算行中的字符,这将非常乏味。有人有更好的主意来解决这个问题吗?
【问题讨论】:
-
如果文件是固定格式,那么使用相同数量的空格可以改变列宽。您可以使用字符串格式来保留文件格式,例如
"{:4s} {:10.6f} {:10.6f} {:11.6f} {:5.2f} {:6.3f} {:6.2f}".format(*row),其中row = ["BBP1", 0.0, -0.15, 0.95*2.033, 0.0, -0.15, 1.77]。