2010-11-18 4 views
0

Comment puis-je analyser le fichier suivant et transformer chaque ligne en un élément d'une liste (il y a un espace au début de chaque ligne)? Malheureusement, je l'ai toujours sucé à regex:/Détourne ceci:Modifier le contenu d'un fichier multiligne en une liste

32.42.4.120', '32.42.4.127 
32.42.5.128', '32.42.5.255 
32.42.15.136', '32.42.15.143 
32.58.129.0', '32.58.129.7 
32.58.131.0', '32.58.131.63 
46.7.0.0', '46.7.255.255 

dans une liste:

('32.42.4.120', '32.42.4.127'), 
('32.42.5.128', '32.42.5.255'), 
('32.42.15.136', '32.42.15.143'), 
('32.58.129.0', '32.58.129.7'), 
('32.58.131.0', '32.58.131.63'), 
+0

Qu'est-il arrivé à la dernière ligne? – SilentGhost

Répondre

1

Que diriez-vous de cela? (Si je me trompe, au moins laissez-moi savoir avant vers le bas de vote)

>>> x = [tuple(line.strip().split("', '")) for line in open('file')] 
>>> x 
[('32.42.4.120', '32.42.4.127'), ('32.42.5.128', '32.42.5.255'), ('32.42.15.136', '32.42.15.143'), ('32.58.129.0', '32.58.129.7'), ('32.58.131.0', '32.58.131.63'), ('46.7.0.0', '46.7.255.255')] 
1

pas regex nécessaire:

l = [] 

with open("name_file", "r") as f: 
    for line in f: 
     l.append(line.split(", ")) 

si vous voulez supprimer premier espace et pour avoir tuple vous pouvez faire:

l = [] 

with open("name_file", "r") as f: 
    for line in f: 
     data = line.split(", ") 
     l.append((data[0].strip(), data[1].strip())) 
+0

Missing nit - il a des espaces blancs, donc il doit être line.strip(). Split() – bgporter

1
l = [] 
f = open("test_data.txt") 
for line in f: 
elems = line[1:-1].split("', '") 
l.append((elems[0], elems[1])) 
f.close() 

print l 

Sortie:

[('32 .42.4.120' , '32 .42.4.127') ("32 .42.5.128", "32 .42.5.255"), ("32 .42.15.136", "32 .42.15.143"), ("32 .58.129.0", "32 .58.129.7"), ("32 .58.131.0", '32 .58.131.63 '), ('46 .7.0.0', '46 .7.255.25 ')]

Questions connexes