python - 使用python读取文本文件中不带空格的数字

标签 python

我是 Python 新手,很难阅读如下文本文件:

  0.42617E-03-0.19725E+09-0.21139E+09 0.37077E+08
  0.85234E-03-0.18031E+09-0.18340E+09 0.28237E+08
  0.12785E-02-0.16583E+09-0.15887E+09 0.20637E+08

因此文件中的数字之间没有逗号或空格分隔符。 使用 Matlab 我知道如何指定格式,但是如何在 Python 中指定格式呢?

我一直在尝试 np.loadtxt 但不知道如何设置要读取的位数,所以如果有人能给我一个提示,我将非常感激。

提前致谢, 埃里克

最佳答案

为了扩展我的评论,基于您可以使用 MATLAB 成功解析此内容的事实,我假设这些字段是固定宽度的。在这种情况下,您可以根据字段宽度对每一行进行切片,然后将其转换为 numpy 数组(如果您需要的话)。举个例子:

import numpy

input_data = """ 0.42617E-03-0.19725E+09-0.21139E+09 0.37077E+08
 0.85234E-03-0.18031E+09-0.18340E+09 0.28237E+08
 0.12785E-02-0.16583E+09-0.15887E+09 0.20637E+08
"""
input_rows = input_data.split('\n')

width = 12
num_fields = 4

data = []
for input_row in input_rows:
    if not input_row:
        continue
    data.append([float(input_row[width * i:width * (i + 1)].strip()) for i in range(num_fields)])

data = numpy.array(data)
print(data)

输出:

[[  4.26170000e-04  -1.97250000e+08  -2.11390000e+08   3.70770000e+07]
 [  8.52340000e-04  -1.80310000e+08  -1.83400000e+08   2.82370000e+07]
 [  1.27850000e-03  -1.65830000e+08  -1.58870000e+08   2.06370000e+07]]

当然,此示例使用固定字符串来表示输入数据,但您可以想象对输入流执行类似的操作。

关于python - 使用python读取文本文件中不带空格的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34048060/

相关文章:

Python正则表达式-获取时间和日期

python - 如何避免 pandas 在保存的 csv 中创建索引

python - python 中的 __str__ 方法

python - 如何在 Alembic 迁移(Postgres)中使用现有的 sqlalchemy Enum

android - 尝试访问 android 存储库时出现 "Error: Python not found"

python - 如何将自定义类对象转换为 Python 中的元组?

python - 是否可以将 3D 模型导入 pyglet?

python - 用 pandas 识别统计异常值 : groupby and individual columns

python - BadFilterError : invalid filter: Only one property per query may have inequality filters (<=, >=, <, >)

python - 将 Pandas 中的一行输出到一个数组