Найти - Пользователи
Полная версия: a.isdecimal() VS a.isdigit()
Начало » Python для новичков » a.isdecimal() VS a.isdigit()
1
dikbron
Всем привет!
Кто-нибуть может подсказать чем отличаются строковые методы isdecimal() и isdigit()
Насколько я понимаю и тот и тот возвращает True если строка состоит из десятичных цифр ‘895893’
иначе False ('37845.34')
Отличие между ними есть? И в чем если есть? На примерах
Спасибо.
J.R.
Тык.
py.user.next
python.org. str.isdecimal

>>> lst = [(chr(i), hex(i)) for i in range(0x110000) if chr(i).isdigit() and not chr(i).isdecimal()]
>>> len(lst)
128
>>> lst
[('²', '0xb2'), ('³', '0xb3'), ('¹', '0xb9'), ('፩', '0x1369'), ('፪', '0x136a'), ('፫', '0x136b'), ('፬', '0x136c'), ('፭', '0x136d'), ('፮', '0x136e'), ('፯', '0x136f'), ('፰', '0x1370'), ('፱', '0x1371'), ('᧚', '0x19da'), ('⁰', '0x2070'), ('⁴', '0x2074'), ('⁵', '0x2075'), ('⁶', '0x2076'), ('⁷', '0x2077'), ('⁸', '0x2078'), ('⁹', '0x2079'), ('₀', '0x2080'), ('₁', '0x2081'), ('₂', '0x2082'), ('₃', '0x2083'), ('₄', '0x2084'), ('₅', '0x2085'), ('₆', '0x2086'), ('₇', '0x2087'), ('₈', '0x2088'), ('₉', '0x2089'), ('①', '0x2460'), ('②', '0x2461'), ('③', '0x2462'), ('④', '0x2463'), ('⑤', '0x2464'), ('⑥', '0x2465'), ('⑦', '0x2466'), ('⑧', '0x2467'), ('⑨', '0x2468'), ('⑴', '0x2474'), ('⑵', '0x2475'), ('⑶', '0x2476'), ('⑷', '0x2477'), ('⑸', '0x2478'), ('⑹', '0x2479'), ('⑺', '0x247a'), ('⑻', '0x247b'), ('⑼', '0x247c'), ('⒈', '0x2488'), ('⒉', '0x2489'), ('⒊', '0x248a'), ('⒋', '0x248b'), ('⒌', '0x248c'), ('⒍', '0x248d'), ('⒎', '0x248e'), ('⒏', '0x248f'), ('⒐', '0x2490'), ('⓪', '0x24ea'), ('⓵', '0x24f5'), ('⓶', '0x24f6'), ('⓷', '0x24f7'), ('⓸', '0x24f8'), ('⓹', '0x24f9'), ('⓺', '0x24fa'), ('⓻', '0x24fb'), ('⓼', '0x24fc'), ('⓽', '0x24fd'), ('⓿', '0x24ff'), ('❶', '0x2776'), ('❷', '0x2777'), ('❸', '0x2778'), ('❹', '0x2779'), ('❺', '0x277a'), ('❻', '0x277b'), ('❼', '0x277c'), ('❽', '0x277d'), ('❾', '0x277e'), ('➀', '0x2780'), ('➁', '0x2781'), ('➂', '0x2782'), ('➃', '0x2783'), ('➄', '0x2784'), ('➅', '0x2785'), ('➆', '0x2786'), ('➇', '0x2787'), ('➈', '0x2788'), ('➊', '0x278a'), ('➋', '0x278b'), ('➌', '0x278c'), ('➍', '0x278d'), ('➎', '0x278e'), ('➏', '0x278f'), ('➐', '0x2790'), ('➑', '0x2791'), ('➒', '0x2792'), ('𐩀', '0x10a40'), ('𐩁', '0x10a41'), ('𐩂', '0x10a42'), ('𐩃', '0x10a43'), ('𐹠', '0x10e60'), ('𐹡', '0x10e61'), ('𐹢', '0x10e62'), ('𐹣', '0x10e63'), ('𐹤', '0x10e64'), ('𐹥', '0x10e65'), ('𐹦', '0x10e66'), ('𐹧', '0x10e67'), ('𐹨', '0x10e68'), ('𑁒', '0x11052'), ('𑁓', '0x11053'), ('𑁔', '0x11054'), ('𑁕', '0x11055'), ('𑁖', '0x11056'), ('𑁗', '0x11057'), ('𑁘', '0x11058'), ('𑁙', '0x11059'), ('𑁚', '0x1105a'), ('🄀', '0x1f100'), ('🄁', '0x1f101'), ('🄂', '0x1f102'), ('🄃', '0x1f103'), ('🄄', '0x1f104'), ('🄅', '0x1f105'), ('🄆', '0x1f106'), ('🄇', '0x1f107'), ('🄈', '0x1f108'), ('🄉', '0x1f109'), ('🄊', '0x1f10a')]
>>>
dikbron
ок спасибо
dikbron
хороший пример. у меня в отношении него есть вопрос:
почему выскакивает ошибка при использовании функции print(lst):

>>> lst =
[(chr(i), hex(i)) for i in range(0x110000) if chr(i).isdigit() and not chr(i).isdecimal()
]
>>> print(len(lst))
128
>>> print(lst)
Traceback (most recent call last):
File “<pyshell#63>”, line 1, in <module>
print(lst)
File “C:\Program Files\Python 3.5\lib\idlelib\PyShell.py”, line 1343, in write
return self.shell.write(s, self.tags)
UnicodeEncodeError: ‘UCS-2’ codec can't encode characters in position 1612-1612: Non-BMP character not supported in Tk
>>>
как ее можно исправить?
Спасибо
i.slepov
dikbron
Non-BMP character not supported in Tk

dikbron
File “C:\Program Files\Python 3.5\lib\idlelib\PyShell.py”, line 1343, in write

dikbron
как ее можно исправить?

На Linux работает. Попробуйте то же самое без IDLE в консоле.
У вас тикиль не может отобразить эти символы.
dikbron
i.slepov
На Linux работает. Попробуйте то же самое без IDLE в консоле.
У вас тикиль не может отобразить эти символы.
на Linux может и работает но у меня Winda+ в Sublime text 3 тоже работает но с пакетами.
в командной строке не работает:

C:\Windows\System32>0.py
128
Traceback (most recent call last):
File “D:\python-file\pyf\0.py”, line 3, in <module>
print(lst)
File “C:\Program Files\Python 3.5\lib\encodings\cp866.py”, line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_map)
UnicodeEncodeError: ‘charmap’ codec can't encode character ‘\xb2’ in position 3:
character maps to <undefined>

пути прописаны, кириллицу печатает нормально

меня интересует как исправить подобную ошибку в Винде поскольку например будет программа с подобным кодом, а в Винде она выходит не запуститься
py.user.next
dikbron
меня интересует как исправить подобную ошибку в Винде
dikbron
пути прописаны, кириллицу печатает нормально
Кириллица в компах - не такое уж новое изобретение, поэтому она есть в древних однобайтовых кодировках, которыми пользуется винда.
Вообще, отображать юникод она умеет, но для этого надо что-то там настраивать.
В cp866 можно просто заменить символы на вопросики.
i.slepov
dikbron
меня интересует как исправить подобную ошибку в Винде поскольку например будет программа с подобным кодом, а в Винде она выходит не запуститься

Попробуйте

chcp 65001

Тут и тут подробнее.
dikbron

i.slepov
Тут и тут подробнее.
спасибо за инфу
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB