如何分割文件中的所有浮点数?

问题描述 投票:-1回答:2

我是python的新手,还没有阅读所有文档,我有一个包含x,y值的文件,我想将所有这些x,y值除以1000或移动十进制的3位数字。文件样本:

TP_NET 537.534 768.500   MFO2_CAN1TX_EVENT1 TOP
TP_NET 518.000 815.500   MFO1_CAN1RX TOP
TP_NET 416.000 829.500   CON_SPI1_MISO BOTTOM

我希望输出文件是

TP_NET .537534 .768500   MFO2_CAN1TX_EVENT1 TOP
TP_NET .518000 .815500   MFO1_CAN1RX TOP
TP_NET .416000 .829500   CON_SPI1_MISO BOTTOM

我可以使用Excel轻松完成此操作,但是我正在学习python。所以,这是我写的,到处都有错误。

import re
import numpy as np
num = 1000
with open('tp') as f, open('tp_mils','w') as f1:
list = re.findall('\d*?\.\d+', f.readline())
new_list = np.divide(list, num)
f1.writelines(new_list)

这是失败:

Traceback (most recent call last):
  File "float.py", line 6, in <module>
    new_list = np.divide(list, num)
TypeError: ufunc 'true_divide' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''
python
2个回答
0
投票

您忽略了将找到的字段转换为float。从问题空间中删除文件输入后,我用简单的print跟踪了问题。输入的每一行产生两个输出:Python list和结果numpy数组。

注意:像使用list一样,对带有局部变量的内置类型进行“阴影”处理。import re import numpy as np num = 1000 infile = [ "TP_NET 537.534 768.500 MFO2_CAN1TX_EVENT1 TOP", "TP_NET 518.000 815.500 MFO1_CAN1RX TOP", "TP_NET 416.000 829.500 CON_SPI1_MISO BOTTOM", ] for line in infile: nums = [float(x) for x in re.findall('\d*?\.\d+', line)] print(nums) new_list = np.divide(nums, num) print(new_list)

输出:

[537.534, 768.5] [0.537534 0.7685 ] [518.0, 815.5] [0.518 0.8155] [416.0, 829.5] [0.416 0.8295]


0
投票
您无需使用renumpy模块来使事情复杂化:
© www.soinside.com 2019 - 2024. All rights reserved.