2015-06-15 6 views
0

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 , Печать была только для моего собственного устранения неполадок, но, похоже, не предоставила мне никакой дополнительной информации.

Любые идеи о том, что я могу сделать, чтобы исправить это?

+0

Какая строка, которую вы пытаетесь преобразовать в float в этом экземпляре? – TigerhawkT3

+0

Используя образец Report.TXT, я предоставил строку, соответствующую «Compound1» будет «7.00746e-1» .Я использовал команду strip(), чтобы попытаться изолировать только номер, так как моя команда [75:94] возвращает некоторые пробелы. – Steve

+0

Ah I ju st понял, что, возможно, python не распознает экспонента как правильный поплавок? Во всяком случае, эта же проблема связана с числами, которые имеют только десятичные знаки и без экспоненты – Steve

ответ

0

преобразование в поплавок не является такой хорошей идеей в этом случае. , поскольку вы копируете его в файл с разделителями, это не имеет значения, если вы конвертируете в float или нет. более того (вопрос с плавающей запятой в Python предлагает конвертировать не плавать, используя метод() стандартную библиотеку поплавка.

вы будете лучше писать значение жала, так как вы хотели бы иметь вы лабораторные результаты точны.

использовать numpy для преобразования комплексных чисел в десятичные числа, если это необходимо.

+0

Если я выводим строку в Excel, это не позволяет мне выполнять с ней какие-либо численные вычисления. Даже выделение столбцов и преобразование в число не позволяют мне делать с ними какие-либо вычисления. Я думаю, возможно, что моя проблема выше связана с этой проблемой. – Steve

+0

Вы должны иметь возможность форматировать ячейки как числа - это должно происходить автоматически. Если Excel не распознает эти значения как числа, вы должны еще раз взглянуть на ваши входные файлы. – TigerhawkT3

Смежные вопросы