Code: Alles auswählen
import string
try:
True
except NameError:
False, True = 0, 1
def new_calib(line):
pos = string.find(line,"0 ")
repl = "1 " + str(int(line[pos+2:pos+4])+22)[:2]
return string.replace(line,line[pos:pos+4], repl, 1)
dateiname="test.tst"
infile = open(dateiname, "r")
zeilen=infile.readlines()
infile.close()
outfile = open(dateiname,"w")
chkflag = False
cline = ""
for line in zeilen:
if cline: # Zeile gemerkt?
if string.find(line,"</CALIB>") > -1: #schon Endtag?
line = new_calib(cline) + line # neue Zeile davor einfuegen
cline = "" # Zeile vergessen
if chkflag:
cline = line # Zeile Merken
outfile.write(line)
chkflag = string.find(string.strip(line),"<CALIB") == 0 # naechste merken!
outfile.close()
Und das mit den boolschen Ausdrücken: alles was leer ist gilt als False (also [],(),0,"",{}) und der Rest als True. Das ist verdammt praktisch, da man so leichter programmieren kann. Um trotzdem Formalität reinzubringen hat man dann noch einen Typ von int abgeleitet (bool), der dem ganzem einen Namen gibt aber sich notfalls wie eine Zahl (1 oder 0) verhält. Damit sind Tricks wie dieser möglich:
Code: Alles auswählen
zahl=5
a=("ungerade","gerade")[(zahl%2)==0]#a ist nun das was zahl ist