首页 > 解决方案 > 将从字典中提取的字符串转换为浮点数

问题描述

我有一个包含如下行的文本文件:

0001193125-09-111401    AccountsNotesAndLoansReceivableNetCurrent   us-gaap/2008        20081231    0   USD 2570000.0000    
0001193125-09-111401    AccountsNotesAndLoansReceivableNetCurrent   us-gaap/2008        20090331    0   USD 2185000.0000    
0001104659-09-031513    AccountsNotesAndLoansReceivableNetCurrent   us-gaap/2008        20081231    0   USD 1227224000.0000 
0001104659-09-031513    AccountsNotesAndLoansReceivableNetCurrent   us-gaap/2008        20090331    0   USD 1452748000.0000 

这是我打开它的代码:

path = "2009q2/num.txt"
with open(path, 'r') as a_file:
      for line in a_file:
      stripped_line = line.strip()
      values_list = stripped_line.split('\t')[0:8]

Wherevalues_list是一个包含每行数据的列表。现在,我正在制作一个dict

values_dict = {
         'cik': values_list[0][0:10], 
         'accession': values_list[0][10::].replace("-", ""), 
         'tag': values_list[1], 
         'value': values_list[3], 
         'valueid': values_list[6], 
         'date': values_list[4]
         }

values_dict['value']str这样的'12345.0000'。现在,我想将此字符串转换为float. 我需要的最终结果是12345.0. 所以,我尝试了:

float(values_dict['value'])

但我收到以下错误: could not convert string to float: 'value' 我对此感到困惑,然后尝试:

x = '12345.0000'
print(float(x))

输出:12345.0它可以正常工作,这里有什么问题?

编辑: 的内容2009q2/num.txt"是:

0001193125-09-111401    AccountsNotesAndLoansReceivableNetCurrent   us-gaap/2008        20081231    0   USD 2570000.0000    
0001193125-09-111401    AccountsNotesAndLoansReceivableNetCurrent   us-gaap/2008        20090331    0   USD 2185000.0000    
0001104659-09-031513    AccountsNotesAndLoansReceivableNetCurrent   us-gaap/2008        20081231    0   USD 1227224000.0000 
0001104659-09-031513    AccountsNotesAndLoansReceivableNetCurrent   us-gaap/2008        20090331    0   USD 1452748000.0000 

编辑2问题是文本文件包含以下标题:

adsh    tag version coreg   ddate   qtrs    uom value   footnote

所以,当我这样做时,dict["value"]我得到"coreg"了 which 是一个字符串。因此,float(values_dict["value"])提出该错误。

标签: python

解决方案


感谢纳菲兹·艾哈迈德。问题是文本文件头:

adsh    tag version coreg   ddate   qtrs    uom value   footnote

所以,当我这样做时,values_list[7]它会返回'value'。这根本不是一个float


推荐阅读