1. Python / Говнокод #14204

    −109

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    import re
    
    _parse_iso.parser = re.compile("""
        ^
        (?P<year> [0-9]{4})(?P<ymdsep>-?)
        (?P<month>[0-9]{2})(?P=ymdsep)
        (?P<day>  [0-9]{2})
    
        (?: # time part... optional... at least hour must be specified
    	(?:T|\s+)
            (?P<hour>[0-9]{2})
            (?:
                # minutes, separated with :, or none, from hours
                (?P<hmssep>[:]?)
                (?P<minute>[0-9]{2})
                (?:
                    # same for seconds, separated with :, or none, from hours
                    (?P=hmssep)
                    (?P<second>[0-9]{2})
                )?
            )?
            
            # fractions
            (?: [,.] (?P<frac>[0-9]{1,10}))?
    
            # timezone, Z, +-hh or +-hh:?mm. MUST BE, but complain if not there.
            (
                (?P<tzempty>Z) 
            | 
                (?P<tzh>[+-][0-9]{2}) 
                (?: :? # optional separator 
                    (?P<tzm>[0-9]{2})
                )?
            )?
        )?
        $
    """, re.X) # """

    Написано вполне уважаемым человеком. Долго не мог прийти в себя, проверил dateutil.parser несколько раз. Всеравно не могу понять зачем это нужно было писать.

    Запостил: wvxvw, 10 Декабря 2013

    Комментарии (2) RSS

    • А... ну, вобщем исследование показало, что код очень старый (5 лет). Нормального парсера еще не было.
      Но осадок-то остался.
      Ответить
      • >Нормального парсера еще не было.
        питонопроблемы
        Ответить

    Добавить комментарий