-
-
Notifications
You must be signed in to change notification settings - Fork 32.7k
Closed as not planned
Closed as not planned
Copy link
Labels
Description
The doc of str.isalnum()
says c.isalpha()
, c.isdecimal()
, c.isdigit()
and c.isnumeric()
as shown below:
... A character c is alphanumeric if one of the following returns True: c.isalpha(), c.isdecimal(), c.isdigit(), or c.isnumeric().
But, according to my experiments below, str.isalnum()
is the combination of str.isalpha() and str.isnumeric() so the doc of str.isalnum()
should only say c.isalpha()
and c.isnumeric()
without c.isdecimal()
and c.isdigit()
as shown below:
... A character c is alphanumeric if one of the following returns True: c.isalpha() or c.isnumeric().
def my_isalnum(s):
if s == "":
return False
for c in s:
if not c.isalpha() and not c.isnumeric():
return False
return True
print('Python3'.isalnum(), my_isalnum('Python3'))
# True True
print('Python 3'.isalnum(), my_isalnum('Python 3'))
print(''.isalnum(), my_isalnum(''))
# False False
print('12345'.isalnum(), my_isalnum('12345')) # Lowercase Arabic Numeral
print('12345'.isalnum(), my_isalnum('12345')) # Uppercase Arabic Numeral
print('١٢٣٤٥'.isalnum(), my_isalnum('١٢٣٤٥')) # 12345 (Eastern Arabic Numeral)
print('¹²³⁴⁵'.isalnum(), my_isalnum('¹²³⁴⁵')) # 12345 (Superscript Arabic Numeral)
print('₁₂₃₄₅'.isalnum(), my_isalnum('₁₂₃₄₅')) # 12345 (Subscript Arabic Numeral)
print('ⅻ'.isalnum(), my_isalnum('ⅻ')) # 12 (Lowercase Roman Numeral)
print('Ⅻ'.isalnum(), my_isalnum('Ⅻ')) # 12 (Uppercase Roman Numeral)
print('xii'.isalnum(), my_isalnum('xii')) # 12 (Lowercase Alphabet)
print('XII'.isalnum(), my_isalnum('XII')) # 12 (Uppercase Alphabet)
print('十二'.isalnum(), isalnum('十二')) # 12 (Japanese Kanji Numeral)
print('壱弐'.isalnum(), my_isalnum('壱弐')) # 12 (Japanese Kanji Numeral)
print('0b1100'.isalnum(), my_isalnum('0b1100')) # 12 (Binary)
print('0o14'.isalnum(), my_isalnum('0o14')) # 12 (Octal)
print('0xc'.isalnum(), my_isalnum('0xc')) # 12 (Hexadecimal)
# True True
print('-12345'.isalnum(), my_isalnum('-12345'))
print('1 2 3 4 5'.isalnum(), my_isalnum('1 2 3 4 5')) # With spaces
print('1.2345'.isalnum(), my_isalnum('1.2345'))
print('1,2345'.isalnum(), my_isalnum('1,2345'))
print('1.23+4.5j'.isalnum(), my_isalnum('1.23+4.5j'))
print(''.isalnum(), my_isalnum(''))
# False False
# Extra
print('①②③④⑤'.isalnum(), my_isalnum('①②③④⑤'))
print('⓵⓶⓷⓸⓹'.isalnum(), my_isalnum('⓵⓶⓷⓸⓹'))
print('❶❷❸❹❺'.isalnum(), my_isalnum('❶❷❸❹❺'))
print('➊➋➌➍➎'.isalnum(), my_isalnum('➊➋➌➍➎'))
print('⑴⑵⑶⑷⑸'.isalnum(), my_isalnum('⑴⑵⑶⑷⑸'))
print('⒈⒉⒊⒋⒌'.isalnum(), my_isalnum('⒈⒉⒊⒋⒌'))
# True True
print('1⃣2⃣3⃣4⃣5⃣'.isalnum(), my_isalnum('1⃣2⃣3⃣4⃣5⃣'))
# False False
Metadata
Metadata
Assignees
Labels
Projects
Status
Todo