Я прохожу через каталог .exp
файлов, вытягивая информацию, которую я хочу от каждого из них, а затем компилирую в файл .csv
. это безвкусный, но вот это:Python: parse .exp to .csv
outMCfile = open(os.path.join(workingDir,'output',date+'NeptuneCdSummary.csv'),'w+')
for fn in fileList:
infile = os.path.join(workingDir,fn)
tmpHeader = open(infile,'r').readlines()
for line in tmpHeader:
line = line.strip()
if line.startswith('Date') == True:
doa = line.split(' ')
doa = doa[1]
outMCfile.write(doa)
outMCfile.write("\n")
elif line.startswith('Run number') == True:
run = line.split(':')
run = run[1].strip()
outMCfile.write(run)
outMCfile.write("\n")
elif line.startswith('Comment') == True:
comment = line.split(':')
comment = comment[1].strip()
outMCfile.write(comment)
outMCfile.write("\n")
elif line.startswith('SampleType') == True:
samType = line.split(':')
samType = samType[1].strip()
outMCfile.write(samType)
outMCfile.write("\n")
elif line.startswith('Cycle') == True:
labels = line
outMCfile.write(labels)
outMCfile.write("\n")
elif line.startswith('***') == True:
summary = line
outMCfile.write(summary)
outMCfile.write("\n")
outMCfile.close()
последние два условия в for
цикла (строки, которые начинаются с «Cycle
» и «***
») являются 22-32 столбцов в ширину (некоторые индексы, некоторые из них поплавки). Как я могу разграничить результат? Я просто получаю длинную строку чисел в моем выходном CSV для каждой из этих строк в одной и той же ячейке. И если я использую line.split()
, я получаю TypeError
независимо от того, какой разделитель я использую в скобках.
Источник линия (это все в одной строке) в .exp выглядит следующим образом: «*** Среднее 1.8101587019969535e-003 1.7032095329860594e-003 1.1496630243258965e-003 1.1713999855908471e-003 4.7688994577955489e-003 4.5573296301687650e -003 3.9930890896827012e-002 2.0829073529889563e-002 9.3939542591824787e-001 9.5234032647735734e-001 1.7299477345544945e + 000 + 000 2.5226638938456563e 3.8076954346734854e-001 1.8291027001438267e + 000 + 000 2.6616393017410958e 4.0608176179586236e-001 1.5082949448806580e + 000 2.1780140681716909e-001 1.4703089782231224e-001 "
Но выход в .csv больше не имеет разделения пространства; это все в первой ячейке, тогда как мне нужны «***», «Mean», «##### ...», «#### ...» для каждой из них есть их собственная ячейка.
в '== true' излишни. Возможно, вы можете опубликовать одну из этих строк, которые вызывают проблемы? – wardk
другой nitpick: в 'outMCfile = open (...)', ''режим w'' достаточен, так как вы его никогда не читали. –
Спасибо за отзыв re. == Истинный ... Я все еще нахожусь на неуклюжем уровне в Python, всегда ищем более упорядочивающие советы. Это то, что вызывает проблему, в частности: 'elif line.startswith ('Cycle') == True: labels = line outMCfile.write (метки) outMCfile.write (" \ n ") elif line.startswith ('***') == True: summary = line outMCfile.write (summary) outMCfile.write ("\ n") ' – ksmith