无法将字符串转换为浮点数 f 错误 Python

问题描述 投票:0回答:1

我正在读取遵循以下格式的 .txt 文件:

0.16,0.54,0.01,0.90,0.58,f,t,f
0.84,0.01,0.95,0.48,0.26,t,f,f
0.10,0.72,0.31,0.23,0.26,f,f,t

这就是我在文件中阅读的方式:

def main():
    if len(sys.argv) != 2:
        print("Need input file.")
        sys.exit(1)

    input_file = sys.argv[1]

    with open(input_file, 'r') as f:
        for line in f:
            line = line.strip()  
            evidence = line[-1]  
            cpt_line = line[:-1]  
            print("cpt_line:", repr(cpt_line))  # Debug
            print("evidence:", evidence)  # Debug
            values = cpt_line.split(',')  
            numeric_values = values[:-1]  
            print("Numeric values:", numeric_values)  # Debug
            px_given_e = hmm_filtering(','.join(numeric_values), evidence)
            print(
                "{:.4f},{:.4f}--><{:.4f},{:.4f}>".format(*map(float, numeric_values)), px_given_e, 1 - px_given_e)

我想读入值并将其单独存储以执行功能,并且我想分别读入字符串“t”和“f”作为证据,但这是我的输出:

cpt_line: '0.16,0.54,0.01,0.90,0.58,f,t,'
evidence: f
Numeric values: ['0.16', '0.54', '0.01', '0.90', '0.58', 'f', 't']
Traceback (most recent call last):
  File "/Users/katelynnnguyen/Desktop/451_AT/hmm.py", line 60, in <module>
    main()
  File "/Users/katelynnnguyen/Desktop/451_AT/hmm.py", line 56, in main
    "{:.4f},{:.4f}--><{:.4f},{:.4f}>".format(*map(float, numeric_values)), px_given_e, 1 - px_given_e)
ValueError: could not convert string to float: 'f'

我重试了 strip() 函数并查看了堆栈上的其他问题,但仍然遇到同样的问题。谁能给我一个关于如何解决这个问题的建议吗?非常感谢你

python string
1个回答
-1
投票

这些是值:

Numeric values: ['0.16', '0.54', '0.01', '0.90', '0.58', 'f', 't']

和这段代码:

map(float, numeric_values)

尝试将它们转换为浮点数。每一个,包括不是数字的

'f'

如果您打算仅使用前 0 .. N 个数值(总共 N+1),请使用切片:

map(float, numeric_values[0:N])
© www.soinside.com 2019 - 2024. All rights reserved.