pisu z hlavy, ale melo by to fungovat... ber to jako odrazovej mustek treba
import re RES = dict(rele=re.compile(r'^[01]{10}$'), napeti=re.compile(r'^[01]{2}$'), teplota=re.compile(r'^(\d{4}\|){3}$'), datum=re.compile(r'^\d{2}\.\d{2}\.20\d{2} \d{2}\:\d{2}:\d{2}$')) def meh(s): for key, regexp in RES.items(): if re.match(regexp, s): return key else: return None def test_meh(): assert meh('01') == 'napeti' assert meh('0101010101') == 'rele' assert meh('1256|1360|1150|') == 'teplota' assert meh('23.06.2015 16:01:35') == 'datum' assert not meh('blablabla') assert not meh('02') assert not meh('1234|123') assert not meh('') --- In Perl you shoot yourself in the foot, but nobody can understand how you did it. Six months later, neither can you. | print 'aknerats'[::-1] 2015-06-23 16:11 GMT+02:00 "Ing. Vladislav Ludík" <vl...@ludik.cz>: > Zdravím, > > moje elektronika mi vrací po sériovém portu několik druhů dat: > > stav relé: "010101010101" - 10-ti místný výstup 0 nebo 1 > stav napětí: "01" - 2-místný výstup 0 nebo 1 > stav teplot: "1256|1360|1150|" 15-ti místný výstup tří skupin oddělených | > datum a čas: "23.06.2015 16:01:35" 19-ti místný výstup > > Složitě to otestovat umím. > Test by měl rozpoznat chybnou délku, formát a nelegální znaky testovaných > dat. > Chtěl bych použít co nejjednodušší test. > Zatím se mi to moc nedaří. > Poradí mi někdo ? > > Díky Vláďa > > > _______________________________________________ > Python mailing list > python@py.cz > http://www.py.cz/mailman/listinfo/python > > Visit: http://www.py.cz _______________________________________________ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz