Изменить содержимое многострочного файла в список - PullRequest
0 голосов
/ 18 ноября 2010

Как я могу разобрать следующий файл и превратить каждую строку в элемент списка (в начале каждой строки есть пробел)? К сожалению, я всегда отстой в регулярных выражениях: / Так включите это:

 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

в список:

('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'),

Ответы [ 3 ]

1 голос
/ 18 ноября 2010

Как насчет этого?(Если я ошибаюсь, по крайней мере, дайте мне знать, перед повторным голосованием)

>>> 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 голос
/ 18 ноября 2010
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

Выход:

[('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 ')]

1 голос
/ 18 ноября 2010

регулярное выражение не требуется:

l = []

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

если вы хотите удалить первый пробел и иметь кортеж, вы можете сделать:

l = []

with open("name_file", "r") as f:
   for line in f:
       data = line.split(", ")
       l.append((data[0].strip(), data[1].strip()))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...