Miért nem bírom átváltani az str-t int-té? (2019 oktober eutazas)
Biztos vmi facepalm dolog, de en mar fel oraja nezem, es nem haladok sokat vele, szoval megkoszonnem, ha valaki segitene.
Én azt csináltam, hogy hátulról elkezdtem integerre valtoztani oket. Az ev meg atalakult, de a tobbi az maradt str ugyanazzal a hibauzenettel.
Akkor most ez egy bug vagy what?
A list comprehension kis egysoros kódrészletekre ajánlott (lásd: lista = [i.strip().split() for i in file]) De te egy olvashatatlan, iszonyatosan hosszú egysorossal akarsz megoldani valamit, így ráadásul nem is tudod debuggolni. Használj sima for ciklust, az adatok kezdőértéke legyen [], és appendáld hozzá az aktuális sor feldolgozásának eredményét. A for cikluson belül legyenek külön változóid az egyes elemekre, úgy egyszerűbb lesz a hibakeresés.
Amúgy a "ValueError: invalid literal for int() with base 10: ''" hiba akkor jön elő, amikor egy üres sztringet akarsz integerré alakítani.
A problémát az okozza, hogy az utasadat.txt.ben vannak olyan sorok, amik a jeggyel rendelkező (a 4. oszlop: JGY) utasokat tartalmazzák.
A jegynek nincsen az utolsó oszlopban érvényességi ideje, csak 0 és 10 közötti darabszáma.
Ha egy ilyen értéknek - legyen az például "10" - utolsó 4 karakterét:
"10"[:4]
vesszük, akkor visszakapjuk azt ilyen formában:
"10"
ami átalakítható egésszé:
10
Viszont ha a 4-6.:
"10"[4:6]
vagy a 6-tól kezdődő:
"10"[6:]
karaktereit vesszük, az egy szimpla üres karakterlánc lesz:
""
amit nem lehet az int() segítségével egésszé konvertálni, ezért dob hibát.
Egy megoldási lehetőség például, hogy a szerint alakítod ki az "adatbázisod" egy-egy rekordját, hogy milyen hosszú a legutolsó oszlop:
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!