我正在读取遵循以下格式的 .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() 函数并查看了堆栈上的其他问题,但仍然遇到同样的问题。谁能给我一个关于如何解决这个问题的建议吗?非常感谢你
这些是值:
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])