难以从文本文件中读取数据并转换为浮点数

时间:2015-06-15 22:24:50

标签: python string readline

更新 我的问题是由于输入文件有奇数编码。将我的开始语句更改为" open(os.path.join(root,' Report.TXT'),' r', encoding =' utf -16' )"解决了我的问题

原创文字 我试图制作一个程序,让我可以更轻松地组织来自某些实验室设备的数据。该程序以递归方式移动文件夹,找到名为Report.TXT的文件,从中抓取一些数字,并在excel文件中正确组织它们。这个文件中有很多不相关的信息,所以我只需要抓取它的一个特定部分(例如第56行,字符72-95)。

以下是其中一个Report.TXT文件的一部分示例,其中包含我要抓取的信息(在ng / uL列下):

RetTime  Type     Area     Amt/Area    Amount   Grp   Name
 [min]         [nRIU*s]               [ng/ul]  
-------|------|----------|----------|----------|--|------------------
  4.232 BB     6164.18262 1.13680e-5 7.00746e-1    Compound1                                        
  5.046 BV     2.73487e5  1.34197e-5   36.70109    Compound2                                           
  5.391 VB     3.10324e5  1.34678e-5   41.79371    Compound3                                            
  6.145            -          -          -         Compound4                                           
  7.258            -          -          -         Compound5                                          
  8.159            -          -          -         Compound6                                           
 11.092 BB     3447.12158 2.94609e-5    1.01555    Compound7                                           
Totals :                               80.21110

这只是Report.TXT的一部分,实际的" Compound1"在真实文件的第54行。

我设法形成了一些能够抓住这些并将其作为字符串插入excel文件的东西:

for rootdir in range(1,tdirs+1):
    flask = 0
    for root, subFolders, files in os.walk(str(rootdir)):
        if 'Report.TXT' in files:
            flask += 1
            with open(os.path.join(root, 'Report.TXT'), 'r') as fin:
                print(root)
                for x in range(0,67):
                    line = fin.readline()
                    if x == 54:
                        if "-" in line[75:94]:
                            compound1 = 0
                        else:
                            compound1 = str(line[75:94].strip())
                        print(compound1)
                        datasheet.write(int(rootdir)+2,int(flask),compound1)
                    if x == 56:
                        if "-" in line[75:94]:
                            compound2 = 0
                        else:
                            compound2 = str(line[75:94].strip())
                        print(compound2)
                        datasheet.write(int(tdirs)+int(rootdir)+6,int(flask),compound2)

但是,如果我将str(line[75:94].strip())替换为float(line[75:94].strip()),则会出现cannot convert string to float错误。打印只是为了我自己的故障排除,但似乎没有给我任何额外的信息。

关于我可以采取哪些措施来解决这个问题?

1 个答案:

答案 0 :(得分:0)

在这种情况下,

转换为float并不是一个好主意。 因为你要将它复制到分隔文件,所以如果你转换为float也没关系。更多(python中的浮点问题建议不要使用标准库float()方法转换为float。

您将更好地编写刺痛值,因为您希望实验室结果准确无误。

如果有必要,使用numpy将复数转换为十进制数。