更新 我的问题是由于输入文件有奇数编码。将我的开始语句更改为" 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
错误。打印只是为了我自己的故障排除,但似乎没有给我任何额外的信息。
关于我可以采取哪些措施来解决这个问题?
答案 0 :(得分:0)
转换为float并不是一个好主意。 因为你要将它复制到分隔文件,所以如果你转换为float也没关系。更多(python中的浮点问题建议不要使用标准库float()方法转换为float。
您将更好地编写刺痛值,因为您希望实验室结果准确无误。
如果有必要,使用numpy将复数转换为十进制数。