Code: Alles auswählen
def Gender(self,fName,saleCount):
i=0
fEOC=open(fName, 'r')
for line in fEOC:
i+=1
gender=line[369:370]
if 1 < i < saleCount:
print gender
fEOC.close()
Code: Alles auswählen
def Gender(self,fName,saleCount):
i=0
fEOC=open(fName, 'r')
for line in fEOC:
i+=1
gender=line[369:370]
if 1 < i < saleCount:
print gender
fEOC.close()
Code: Alles auswählen
line[369:370]
Auch wenn es erst mal nicht falsch ist, frage ich mich warum Du die slice notation verwendest und nicht einfach line[369] abfragst, wenn Du nur ein Zeichen lesen willst?lubb hat geschrieben:obwohl der Zeichen immer auf der Position [369:370] sich befindet
Code: Alles auswählen
def gender(filename, sale_count, index):
with open(filename, 'r') as lines:
for i, line in enumerate(lines):
if 1 < i < sale_count:
try:
print line[index]
except IndexError:
print '?'
Code: Alles auswählen
In [3]: from test import gender
In [4]: gender('test.py', 6, 32)
(
t
?
n
Code: Alles auswählen
from itertools import islice
def gender(filename, sale_count, index):
with open(filename, 'r') as lines:
for line in islice(lines, 2, sale_count):
try:
print line[index]
except IndexError:
print '?'
hendrikS hat geschrieben:Auch wenn es erst mal nicht falsch ist, frage ich mich warum Du die slice notation verwendest und nicht einfach line[369] abfragst, wenn Du nur ein Zeichen lesen willst?lubb hat geschrieben:obwohl der Zeichen immer auf der Position [369:370] sich befindet
die gleiche Datei würde von den ähnlichen Code in VB geprüft und die gewünschte Zeichen würden richtig geliefert.BlackJack hat geschrieben:@lubb: Wenn manchmal das Zeichen davor geliefert wird, dann stimmt Deine Vermutung, dass das gewünschte Zeichen immer am gleichen Index steht ganz einfach nicht.
Code: Alles auswählen
T31301GBB6ARM09KYXSHM09B6GSBV4906386953442001 1211Gans Gustav 05071979HGRDEB6D Gans Gustav Gutelaunestr. 666 Frankfurt am Main 60329 DEU 06997781776605071979MEntenhausen DBiene Maja 14081981F 00 SHM098142 00301J0015950001000 CMSHM09 3GRPS001DE3GRGans Gustav 1WEB WEBWEB WEB19112009142417WEB 05 0016 Y
T31301GBB6ARM09KYXSHM09B6GSBC295595434 36010043 Musterherr Max 15061976HGRDEB6D Musterherr Max Meine Straße 12 Wo anders 01234 DEU 01588649875215061976Mzu hause D 00 SHM098143 NN 00101G0014450001200 DMSHM09 3GRPU001DE3GRMusterherr Max 1WEB WEBWEB WEB19112009142439WEB 05 0016 N
T31301GBB6ARM09KYXSHM09B6GSBC292296100 38070724 Gans Gustav 05071979HGRDEB6D Gans Gustav Gutelaunestr. 666 Frankfurt am Main 60329 DEU
06997781776605071979MEntenhausen D Biene Maja 14081981F00 SHM098144 NN 00401K0014490001000 DMSHM09 3GRPC001DE3GRGans Gustav 1WEB WEBWEB WEB19112009143029WEB 05 0016 N
Das sollte doch aber auch mit "normalen" Slices funktionieren. Dann spart man noch den Import:BlackJack hat geschrieben:Das bekommt man mit `itertools.islice()` mit einer Einrückebene weniger hin (ungetestet):
Code: Alles auswählen
from itertools import islice def gender(filename, sale_count, index): with open(filename, 'r') as lines: for line in islice(lines, 2, sale_count): try: print line[index] except IndexError: print '?'
Code: Alles auswählen
print line[2:sale_count][index]
ich vermute, der Fehler ist nicht in der Programierweise, sonder der Modus wie man die Datei zu lesen öffnet, denn alle geposteten Codes liefern der gleichen FehlerHWK hat geschrieben:Das sollte doch aber auch mit "normalen" Slices funktionieren. Dann spart man noch den Import:BlackJack hat geschrieben:Das bekommt man mit `itertools.islice()` mit einer Einrückebene weniger hin (ungetestet):
Code: Alles auswählen
from itertools import islice def gender(filename, sale_count, index): with open(filename, 'r') as lines: for line in islice(lines, 2, sale_count): try: print line[index] except IndexError: print '?'
MfGCode: Alles auswählen
print line[2:sale_count][index]
HWK