Форум сайта python.su
pal201Зря по \r разрезаешь, это только на винде перенос строки делается \n\r, на нормальных осях уже избавились от пережитка печатных машинок вроде переноса каретки :) Сплитуй по \n. Итого:
for s in result.split('\r'):
for line in result.split('\n'):
if line:
name, val = line.split(':')
print name, val
Офлайн
pasaranax, у него может и не быть значения, а только ключ (как в примере - CallerIDName). Так что лучше, например, через try/except.
Офлайн
expeeТогда val будет равно '', то есть пустой строке. А вот если в строке лога появится второе двоеточие, то вылезет исключение.
pasaranax, у него может и не быть значения, а только ключ (как в примере - CallerIDName). Так что лучше, например, через try/except.
Офлайн
pasaranaxА ну да, просто не обратил внимания, что разбиваешь по ‘:’, а не по ‘: ’. В твоем случае придется еще резать пробелы в начале строки.
Тогда val будет равно '', то есть пустой строке. А вот если в строке лога появится второе двоеточие, то вылезет исключение.
Офлайн
Я бы тоже помог еще чем-нить - если б понимал что и как. К сожалению много неясностей, например:
1.
for s in result.split('\r'):
for s in open('logfile.log'):
Офлайн
Гы-гы… Asterisk однако… 1.4, кажется… AMI. Через телнет общаешься? :-) Я буквально две недели назад разбирал это.
Есть такая штука: pyst. Очень удобно и просто.
Ещё есть варианты на Twisted, но у меня не было времени в него въезжать.
Ты лучше опиши, что тебе конкретно надо и если могу – помогу.
P.S.
pal201Астер разделяет это дело через ‘\r\n’.
result.split('\r')
Офлайн
Я писал автодозвонщик и склепал вот такую функцию для получения сообщений от Астера:
def recive(telnet, timeout=None):
'''Recive data from server.'''
logger.debug('Reciving data...')
if timeout is None:
raw = telnet.read_until('\r\n\r\n')[:-2]
else:
raw = telnet.read_until('\r\n\r\n', timeout)[:-2]
if not raw:
raise EOFError
logger.debug('Recived raw data: %r', raw)
data = {}
for line in raw.strip().split('\r\n'):
key, value = [s.strip() for s in line.split(':', 1)]
data[key] = value
logger.debug('Recived data: %r', data)
return data
Отредактировано (Янв. 5, 2010 21:25:55)
Офлайн