UPDATE: Моя проблема связана с входным файлом, имеющим нечетное кодирование. Изменение моего открытия о "открыть (os.path.join (корень, 'report.txt'), 'R', кодирование = 'UTF-16')" фиксированная моя проблемаСложность чтения данных из текстового файла и преобразования в поплавок
Первоначальный текст Я пытаюсь создать программу, которая позволит мне более легко организовать данные из какого-нибудь лабораторного оборудования. Эта программа рекурсивно перемещается по папкам, находит файл с именем Report.TXT
, захватывает несколько чисел из него и правильно упорядочивает их в файле excel. Из этого файла много нерелевантной информации, поэтому мне нужно захватить только определенную часть (например, строка 56, символы 72-95).
Вот пример части одного из этих Report.txt файлов, содержащих информацию, которую я хочу, чтобы захватить (под нг/колонка мкл):
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 , фактическое «соединение 1» находится в строке 54 реального файла.
мне удалось сформировать то, что будет захватывать их и вставить его в файл первенствовать в виде строки:
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
, Печать была только для моего собственного устранения неполадок, но, похоже, не предоставила мне никакой дополнительной информации.
Любые идеи о том, что я могу сделать, чтобы исправить это?
Какая строка, которую вы пытаетесь преобразовать в float в этом экземпляре? – TigerhawkT3
Используя образец Report.TXT, я предоставил строку, соответствующую «Compound1» будет «7.00746e-1» .Я использовал команду strip(), чтобы попытаться изолировать только номер, так как моя команда [75:94] возвращает некоторые пробелы. – Steve
Ah I ju st понял, что, возможно, python не распознает экспонента как правильный поплавок? Во всяком случае, эта же проблема связана с числами, которые имеют только десятичные знаки и без экспоненты – Steve