Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 19, 2014 21:57:37

ingfa_1981
Зарегистрирован: 2014-01-25
Сообщения: 200
Репутация: +  1  -
Профиль   Адрес электронной почты  

Как данную строку разделить на элементы в список

Уважаемые форумчане. После работы данного кода:

#coding: utf-8
import datetime
import serial
import time
benning_viprymitel = serial.Serial()
benning_viprymitel.baudrate = 9600
benning_viprymitel.bytesize = 8
benning_viprymitel.stopbits = 1
benning_viprymitel.xonxoff = 0
benning_viprymitel.rtscts = 0
benning_viprymitel.timeout = 0
benning_viprymitel.port = 0
benning_viprymitel.parity=serial.PARITY_NONE
benning_viprymitel.open()
print benning_viprymitel.portstr
while True:
    benning_viprymitel.write('AB\r')
    time.sleep(2)
    stroka = benning_viprymitel.readall()
    spisok_avariy = stroka.split('\r\n')
    spisok_avariy = spisok_avariy[-3]
    spisok_avariy = spisok_avariy.split(';')
    for avariya in spisok_avariy:
        if avariya == '_VT4800':
                now_time = datetime.datetime.now()
                vremya = now_time.strftime("%d\%m\%Y %H:%M:%S")
                print u'Автоматы 48В норма. {0}'.format(vremya)
        if avariya == ' VT4800':
                now_time = datetime.datetime.now()
                vremya = now_time.strftime("%d\%m\%Y %H:%M:%S")
                print u"Срабатывание автомата 48 В. {0}".format(vremya)
        if avariya == '_FUSLOA':
                now_time = datetime.datetime.now()
                vremya = now_time.strftime("%d\%m\%Y %H:%M:%S")
                print u'Автоматы 60В норма. {0}'.format(vremya)
        if avariya == ' FUSLOA':
                now_time = datetime.datetime.now()
                vremya = now_time.strftime("%d\%m\%Y %H:%M:%S")
                print u'Срабатывание автомата 60В. {0}'.format(vremya)
        if avariya[0] == ' ':
            print avariya, ' ', vremya
получается строка на рисунке каждые 2 секунды. Возник вопрос как из нее сделать список значений? Половина значений в строке с переносом строки на новую символами /r/n, другая половина разделена символами ; точка с запятой. Во время работы установки если существует авария то она выдается в виде пробела перед значением вместо знака подчеркивания.



Прикреплённый файлы:
attachment com.JPG (70,0 KБ)

Офлайн

#2 Июнь 19, 2014 22:03:07

ingfa_1981
Зарегистрирован: 2014-01-25
Сообщения: 200
Репутация: +  1  -
Профиль   Адрес электронной почты  

Как данную строку разделить на элементы в список

Забыл уточнить строка начинается с символа Q и заканчивается 5 всегда разными цифрами после _FANREC07

Офлайн

#3 Июнь 19, 2014 22:03:15

Singularity
Зарегистрирован: 2011-07-28
Сообщения: 1387
Репутация: +  75  -
Профиль   Отправить e-mail  

Как данную строку разделить на элементы в список

Офлайн

#4 Июнь 20, 2014 00:04:42

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Как данную строку разделить на элементы в список

ingfa_1981
исходное положение - нужно получить строку от Q до тех самых последних цифр. Дальше полученную строку разбить на строки исходя из символов переноса. Пройтись по всем строкам и распарсить их как надо, в зависимости от условий.
К тому же вы не сказали в каком виде хотите список значений.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#5 Июнь 20, 2014 05:52:38

ingfa_1981
Зарегистрирован: 2014-01-25
Сообщения: 200
Репутация: +  1  -
Профиль   Адрес электронной почты  

Как данную строку разделить на элементы в список

Просто элементы списка

[начиная с "UBAT 66.8 V", "UBBR 66.9 V",,,тут остальные элементы списка,,  заканчивая "_FANREC07"]

Отредактировано ingfa_1981 (Июнь 20, 2014 05:53:34)

Офлайн

#6 Июнь 20, 2014 07:52:56

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Как данную строку разделить на элементы в список

s # исходная строка
l=[x for x in s.splitlines()[2:-1] ]
на генераторах это выглядело бы примерно так. Можно и в цикле последовательно. Я не вижу проблемы.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version