Állományok olvasása II. – .strip()

A (szöveges) állomány megnyitásakor létrejött változó (fileobjektum) .readlines() metódusa egyetlen lépésben listát épít az állomány soraiból (a kimenet áttördelve és megkurtítva):

>>> file= open('inf_e_20050519_m_04_lottosz.dat')
>>> lst = file.readlines()
>>> lst
['37 42 44 61 62\n', '18 42 54 83 89\n',  '5 12 31 53 60\n',
  '1 28 47 56 70\n', '54 56 57 59 71\n',  '7 21 33 39 86\n',
…
 '12 28 34 61 70\n',    '1 4 8 69 74\n',  '4 15 46 49 59\n',
 '24 31 67 71 73\n', '12 26 36 46 49\n',  '9 20 21 59 68']

Vegyük észre: ebben az évben az utolsó sort nem zárta le \n.

A szöveg típusú változók (stringobjektumok) .strip() metódusa levágja a szélekről a sorvégjelet (és –alapértelmezés szerint– még néhány további karaktert):

>>> file= open('inf_e_20050519_m_04_lottosz.dat')
>>> lst = file.readlines()
>>> for i in range(len(lst)):
...     lst[i]= lst[i].strip()
... 
>>> lst
['37 42 44 61 62', '18 42 54 83 89',  '5 12 31 53 60',
  '1 28 47 56 70', '54 56 57 59 71',  '7 21 33 39 86',
…
 '12 28 34 61 70',    '1 4 8 69 74',  '4 15 46 49 59',
 '24 31 67 71 73', '12 26 36 46 49',  '9 20 21 59 68']

Írhatunk azonban rövidebb ciklust, egyúttal megszabadulhatunk az indexek használatától. A következő szerkezet a listán iterálva (új) listát épít az elemekből, és azt adja a listának (új) értékül:

>>> file= open('inf_e_20050519_m_04_lottosz.dat')
>>> lst = file.readlines()
>>> lst = [line.strip() for line in lst]
>>> lst
['37 42 44 61 62', '18 42 54 83 89',  '5 12 31 53 60',
  '1 28 47 56 70', '54 56 57 59 71',  '7 21 33 39 86',
…
 '12 28 34 61 70',    '1 4 8 69 74',  '4 15 46 49 59',
 '24 31 67 71 73', '12 26 36 46 49',  '9 20 21 59 68']

Vagy tömörebben leírva:

>>> lst= [line.strip() for line in open('inf_e_20050519_m_04_lottosz.dat')]
>>> lst
['37 42 44 61 62', '18 42 54 83 89',  '5 12 31 53 60',
  '1 28 47 56 70', '54 56 57 59 71',  '7 21 33 39 86',
…
 '12 28 34 61 70',    '1 4 8 69 74',  '4 15 46 49 59',
 '24 31 67 71 73', '12 26 36 46 49',  '9 20 21 59 68']

(Azaz a .readlines() metódus elhagyható.)