Возможно, вы захотите привести это значение к целому числу согласно:
unreadCount = int (re.search (blah, blah, blah).group (1))
. Вызов re.search
возвращает строку и, если вы посмотрите наследующая расшифровка:
>>> x = "7"
>>> if x > 10:
... print "yes"
...
yes
>>> if int(x) > 10:
... print "yes"
...
>>> x = 7
>>> if x > 10:
... print "yes"
...
>>>
вы поймете, почему это не очень хорошая идея.
Причину, по которой вы видите это (то, что вы могли бы назвать странным) поведение, можно почерпнуть из руководство внизу 5.3
:
Подробности реализации CPython: Объекты разных типов, кроме чисел, упорядочены по именам их типов;объекты тех же типов, которые не поддерживают правильное сравнение, упорядочены по их адресу.
Поскольку тип "7"
равен str
, а тип 10
равен int
,он просто сравнивает имена типов ("str"
всегда больше, чем "int"
в альфа-порядке), что приводит к некоторым интересным вещам, таким как:
>>> "1" > 99999999999999999999999
True
>>> "1" == 1
False
Эта деталь реализации продолжала действовать, по крайней мере, до2.7.2.Возможно, он изменился в потоке Python 3000 (пункт, безусловно, был удален из соответствующего раздела документации), но в документации там все еще говорится:
Большинство других объектов встроенных-в типах сравниваются неравно, если они не являются одним и тем же объектом;выбор, считать ли один объект меньшим или большим другого, сделан произвольно, но последовательно в течение одного выполнения программы.
Так что, вероятно, вам не следует полагаться на это.