<div dir="ltr">A nebo to delat primo jednim regexpem s pojmenovanejma skupinama<br><br><br>In [14]: re.match(r"^(?P<cisla>[0-9]+)|(?P<pismena>[a-z]+)$", "sadbc").groupdict()                                                                                                             <br>Out[14]: {'cisla': None, 'pismena': 'sadbc'}<br><br>In [15]: re.match(r"^(?P<cisla>[0-9]+)|(?P<pismena>[a-z]+)$", "21312321").groupdict()                                                                                                          <br>Out[15]: {'cisla': '21312321', 'pismena': None}<br><br><br></div><br><div class="gmail_quote"><div dir="ltr">On Tue, Jun 23, 2015 at 4:32 PM starenka . <<a href="mailto:starenka0@gmail.com">starenka0@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">pisu z hlavy, ale melo by to fungovat... ber to jako odrazovej mustek treba<br>
<br>
<br>
import re<br>
RES = dict(rele=re.compile(r'^[01]{10}$'),<br>
           napeti=re.compile(r'^[01]{2}$'),<br>
           teplota=re.compile(r'^(\d{4}\|){3}$'),<br>
           datum=re.compile(r'^\d{2}\.\d{2}\.20\d{2} \d{2}\:\d{2}:\d{2}$'))<br>
<br>
<br>
def meh(s):<br>
    for key, regexp in RES.items():<br>
        if re.match(regexp, s):<br>
            return key<br>
    else:<br>
        return None<br>
<br>
<br>
def test_meh():<br>
    assert meh('01') == 'napeti'<br>
    assert meh('0101010101') == 'rele'<br>
    assert meh('1256|1360|1150|') == 'teplota'<br>
    assert meh('23.06.2015 16:01:35') == 'datum'<br>
<br>
    assert not meh('blablabla')<br>
    assert not meh('02')<br>
    assert not meh('1234|123')<br>
    assert not meh('')<br>
---<br>
In Perl you shoot yourself in the foot, but nobody can understand how<br>
you did it. Six months later, neither can you. | print<br>
'aknerats'[::-1]<br>
<br>
<br>
2015-06-23 16:11 GMT+02:00 "Ing. Vladislav Ludík" <<a href="mailto:vlada@ludik.cz" target="_blank">vlada@ludik.cz</a>>:<br>
> Zdravím,<br>
><br>
> moje elektronika mi vrací po sériovém portu několik druhů dat:<br>
><br>
> stav relé: "010101010101" - 10-ti místný výstup 0 nebo 1<br>
> stav napětí: "01" - 2-místný výstup 0 nebo 1<br>
> stav teplot: "1256|1360|1150|" 15-ti místný výstup tří skupin oddělených |<br>
> datum a čas: "23.06.2015 16:01:35" 19-ti místný výstup<br>
><br>
> Složitě to otestovat umím.<br>
> Test by měl rozpoznat chybnou délku, formát a nelegální znaky testovaných<br>
> dat.<br>
> Chtěl bych použít co nejjednodušší test.<br>
> Zatím se mi to moc nedaří.<br>
> Poradí mi někdo ?<br>
><br>
> Díky Vláďa<br>
><br>
><br>
> _______________________________________________<br>
> Python mailing list<br>
> <a href="mailto:python@py.cz" target="_blank">python@py.cz</a><br>
> <a href="http://www.py.cz/mailman/listinfo/python" rel="noreferrer" target="_blank">http://www.py.cz/mailman/listinfo/python</a><br>
><br>
> Visit: <a href="http://www.py.cz" rel="noreferrer" target="_blank">http://www.py.cz</a><br>
_______________________________________________<br>
Python mailing list<br>
<a href="mailto:python@py.cz" target="_blank">python@py.cz</a><br>
<a href="http://www.py.cz/mailman/listinfo/python" rel="noreferrer" target="_blank">http://www.py.cz/mailman/listinfo/python</a><br>
<br>
Visit: <a href="http://www.py.cz" rel="noreferrer" target="_blank">http://www.py.cz</a><br>
</blockquote></div>