Working with a data file to simplify it - my aim is to get the stuff in the file in columns, and I've started with splitting and printing only the necessary lines, I'll still have to sort them out into columns somehow. Now the problem is that I'm trying to select all lines with 'Std deviations' in the data file, but since two of them have 3 values and the one only has one value, I get IndexError since on the last list there's no 4th or 5th value to print. Of course just putting in c[3] gives me the first value of all columns and no error, but then I'm losing four values.
output = '.txt'
with open(output) as file:
for line in file:
if '2101' in line and found:
a = line.split()
print(a[1])
elif 'Lifetimes' in line and found:
b = line.split()
print(b[3], b[4], b[5])
elif 'Std deviations' in line and found:
c = line.split()
print(c[3], c[4], c[5])
elif 'Intensities' in line and found:
d = line.split()
print(d[3], d[4], d[5])
elif 'Time-zero' in line and found:
e = line.split()
print(e[4])
else:
found = TrueThe error is: runfile('C:/.../output.py', wdir='C:/.../Python scripts')
#0
0.4000 0.1250 2.0446
Fixed Fixed 0.0339
69.2721 9.6726 21.0553
1.0359 0.8128 0.4063
41.5603
Traceback (most recent call last):
File "<ipython-input-128-f8159069ae40>", line 1, in <module>
runfile('C:/.../output.py', wdir='C:/.../Python scripts')
File "C:\...\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 710, in runfile
execfile(filename, namespace)
File "C:\...\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 101, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)
File "C:/.../output.py", line 47, in <module>
print(c[3], c[4], c[5])
IndexError: list index out of rangeFor reference, the 'output' file looks like this:0-70 #0
Lifetimes (ns) : 0.4000 0.1250 2.0446
Std deviations : Fixed Fixed 0.0339
Intensities (%) : 69.2721 9.6726 21.0553
Std deviations : 1.0359 0.8128 0.4063
Time-zero Channel number : 41.5603
Std deviations : 0.0588
0-70 #1
Lifetimes (ns) : 0.4000 0.1250 2.0714
Std deviations : Fixed Fixed 0.0344
Intensities (%) : 70.0338 9.0952 20.8710
Std deviations : 1.0308 0.8135 0.4009
Time-zero Channel number : 41.5853
Std deviations : 0.0593
0-70 #2
Lifetimes (ns) : 0.4000 0.1250 2.0568
Std deviations : Fixed Fixed 0.0333
Intensities (%) : 69.5963 8.7445 21.6592
Std deviations : 1.0411 0.8177 0.4072
Time-zero Channel number : 41.5541
Std deviations : 0.0603 and so on for up to #100. My aim is to sort the whole thing into a text file with columns for dataset number, lifetimes, deviations, intensities, deviations, time-zero and deviation, and I figured using split to get the specific lines out of the data would be the best thing to start with. Is there a way to assign a command for the time-zero deviation even though 'Std deviations' appears in the same way for everything in the file? Basically I just want this to print, for example for the first set, the 0.0588 value as well.
