Питхон пружа неколико метода стрингова за одређивање и проверу да ли је тип стринга нумерички или алфабетски.
Сваки метод је објашњен узорком кода.
- Одређује да ли је стринг децимална цифра:
str.isdecimal()
- Одређивање да ли је низ број:
str.isdigit()
- Одређује да ли је стринг знак који представља број:
str.isnumeric()
- Одређује да ли је низ абецедни:
str.isalpha()
- Одредите да ли је низ алфанумерички:
str.isalnum()
- Одређује да ли су стрингови АСЦИИ знакови:
str.isascii()
- Пресуда празног низа
- Одредите да ли се низови могу конвертовати у бројеве
За друге методе осим исасции(), стринг који садржи празан стринг, следеће симболе, итд., је нетачан.
,
.
-
-1,23, итд., као нумеричка вредност је објашњена на крају овог одељка.
Регуларни изрази се могу користити за флексибилније одређивање типова знакова и за издвајање релевантних типова знакова.
Погледајте следећи чланак за више информација о томе како да одредите следеће
- Како претворити нумерички низ (стр) у број (инт, флоат)
- Како одредити велика и мала слова
- ПОВЕЗАН:Претварање низа бројева у нумеричке вредности у Питхон-у
- ПОВЕЗАН:Листа метода стрингова за манипулацију великим и малим словима у Питхон-у
- Одређује да ли је стринг децимална цифра:str.isdecimal()
- Одређивање да ли је низ број:str.isdigit()
- Одређује да ли је стринг знак који представља број:str.isnumeric()
- Одређује да ли је низ абецедни:str.isalpha()
- Одредите да ли је низ алфанумерички:str.isalnum()
- Одређује да ли су стрингови АСЦИИ знакови:str.isascii()
- Пресуда празног низа
- Одредите да ли се низови могу конвертовати у бројеве
Одређује да ли је стринг децимална цифра:str.isdecimal()
У исдецимал() је тачно ако су сви знакови децималне цифре, односно знакови у општој категорији Нд Уницоде-а. То важи и за арапске бројеве пуне ширине итд.
s = '1234567890'
print('s =', s)
print('isdecimal:', s.isdecimal())
print('isdigit:', s.isdigit())
print('isnumeric:', s.isnumeric())
# s = 1234567890
# isdecimal: True
# isdigit: True
# isnumeric: True
s = '1234567890'
print('s =', s)
print('isdecimal:', s.isdecimal())
print('isdigit:', s.isdigit())
print('isnumeric:', s.isnumeric())
# s = 1234567890
# isdecimal: True
# isdigit: True
# isnumeric: True
Ако садржи симбол као што је знак минус или тачка, то је лажно. На пример, ако желите да утврдите да је стринг као што је ‘-1,23’ нумеричка вредност, можете да користите руковање изузецима. Ово је објашњено на крају овог одељка.
s = '-1.23'
print('s =', s)
print('isdecimal:', s.isdecimal())
print('isdigit:', s.isdigit())
print('isnumeric:', s.isnumeric())
# s = -1.23
# isdecimal: False
# isdigit: False
# isnumeric: False
Одређивање да ли је низ број:str.isdigit()
У исдигит(), поред бројева који су тачни у исдецимал(), тачни су и бројеви чија је вредност својства Уницоде Нумериц_Типе Дигит или Децимал.
На пример, суперскрипт број који представља квадрат је нетачан у исдецимал(), али истинит у исдигит().
- суперскрипт број који представља квадрат
- ²
- \у00Б2}’
s = '10\u00B2'
print('s =', s)
print('isdecimal:', s.isdecimal())
print('isdigit:', s.isdigit())
print('isnumeric:', s.isnumeric())
# s = 10²
# isdecimal: False
# isdigit: True
# isnumeric: True
Одређује да ли је стринг знак који представља број:str.isnumeric()
У иснумериц(), поред бројева који су тачни у исдигит(), тачни су и бројеви чија је вредност својства Уницоде Нумериц_Типе Нумериц.
Разломци, римски бројеви и кинески бројеви су такође тачни.
s = '\u00BD'
print('s =', s)
print('isdecimal:', s.isdecimal())
print('isdigit:', s.isdigit())
print('isnumeric:', s.isnumeric())
# s = ½
# isdecimal: False
# isdigit: False
# isnumeric: True
s = '\u2166'
print('s =', s)
print('isdecimal:', s.isdecimal())
print('isdigit:', s.isdigit())
print('isnumeric:', s.isnumeric())
# s = Ⅶ
# isdecimal: False
# isdigit: False
# isnumeric: True
s = '一二三四五六七八九〇'
print('s =', s)
print('isdecimal:', s.isdecimal())
print('isdigit:', s.isdigit())
print('isnumeric:', s.isnumeric())
# s = 一二三四五六七八九〇
# isdecimal: False
# isdigit: False
# isnumeric: True
s = '壱億参阡萬'
print('s =', s)
print('isdecimal:', s.isdecimal())
print('isdigit:', s.isdigit())
print('isnumeric:', s.isnumeric())
# s = 壱億参阡萬
# isdecimal: False
# isdigit: False
# isnumeric: True
Одређује да ли је низ абецедни:str.isalpha()
У исалпха(), својство опште категорије Уницоде са једним од следећих је тачно.
Lm
Lt
Lu
Ll
Lo
Абецеда, кинески знакови итд. биће истинити.
s = 'abc'
print('s =', s)
print('isalpha:', s.isalpha())
# s = abc
# isalpha: True
s = '漢字'
print('s =', s)
print('isalpha:', s.isalpha())
# s = 漢字
# isalpha: True
Арапски бројеви су лажни, али кинески бројеви су истинити јер су и они кинески знакови; међутим, нуле у кинеским бројевима су лажне.
s = '1234567890'
print('s =', s)
print('isalpha:', s.isalpha())
# s = 1234567890
# isalpha: False
s = '1234567890'
print('s =', s)
print('isalpha:', s.isalpha())
# s = 1234567890
# isalpha: False
s = '一二三四五六七八九'
print('s =', s)
print('isalpha:', s.isalpha())
# s = 一二三四五六七八九
# isalpha: True
s = '壱億参阡萬'
print('s =', s)
print('isalpha:', s.isalpha())
# s = 壱億参阡萬
# isalpha: True
s = '〇'
print('s =', s)
print('isalpha:', s.isalpha())
# s = 〇
# isalpha: False
Римски бројеви су лажни.
s = '\u2166'
print('s =', s)
print('isalpha:', s.isalpha())
# s = Ⅶ
# isalpha: False
Одредите да ли је низ алфанумерички:str.isalnum()
У исалнум() је тачно ако је сваки знак тачан у било којој од следећих метода наведених до сада.
isdecimal()
isdigit()
isnumeric()
isalpha()
Сваки знак се процењује појединачно, тако да ће низ који садржи слова и бројеве бити истинит у исалнум() чак и ако је нетачан у свим другим методама.
s = 'abc123'
print('s =', s)
print('isalnum:', s.isalnum())
print('isalpha:', s.isalpha())
print('isdecimal:', s.isdecimal())
print('isdigit:', s.isdigit())
print('isnumeric:', s.isnumeric())
# s = abc123
# isalnum: True
# isalpha: False
# isdecimal: False
# isdigit: False
# isnumeric: False
Одређује да ли су стрингови АСЦИИ знакови:str.isascii()
Питхон 3.7 је додао исасции(). Враћа тачно ако су сви знакови у низу АСЦИИ знакови.
Поред бројева и слова, тачни су и симболи као што су + и -.
s = 'abc123+-,.&'
print('s =', s)
print('isascii:', s.isascii())
print('isalnum:', s.isalnum())
# s = abc123+-,.&
# isascii: True
# isalnum: False
Не-АСЦИИ хирагана и други знакови су лажни.
s = 'あいうえお'
print('s =', s)
print('isascii:', s.isascii())
print('isalnum:', s.isalnum())
# s = あいうえお
# isascii: False
# isalnum: True
Као што ћемо даље видети, за разлику од других метода, исасции() враћа труе чак и за празан стринг.
Пресуда празног низа
Празан стринг је истинит за исасции() и нетачан за остале методе.
s = ''
print('s =', s)
print('isalnum:', s.isalnum())
print('isalpha:', s.isalpha())
print('isdecimal:', s.isdecimal())
print('isdigit:', s.isdigit())
print('isnumeric:', s.isnumeric())
print('isascii:', s.isascii())
# s =
# isalnum: False
# isalpha: False
# isdecimal: False
# isdigit: False
# isnumeric: False
# isascii: True
Користите боол() да одредите да ли је то празан стринг. Повратна вредност је нетачна за празан стринг и тачна у супротном.
print(bool(''))
# False
print(bool('abc123'))
# True
Одредите да ли се низови могу конвертовати у бројеве
Низови негативних или фракционих вредности садрже тачке или знаке минус. Према томе, резултат је нетачан за све методе осим исасции().
Иако је тачно за исасции(), није погодно за одређивање да ли се стринг може конвертовати у нумеричку вредност, пошто је истинит чак и ако садржи друге симболе или абецедне знакове.
s = '-1.23'
print('s =', s)
print('isalnum:', s.isalnum())
print('isalpha:', s.isalpha())
print('isdecimal:', s.isdecimal())
print('isdigit:', s.isdigit())
print('isnumeric:', s.isnumeric())
print('isascii:', s.isascii())
# s = -1.23
# isalnum: False
# isalpha: False
# isdecimal: False
# isdigit: False
# isnumeric: False
# isascii: True
Стрингови се могу конвертовати у бројеве са покретним зарезом помоћу флоат(). Грешка за низове који се не могу конвертовати.
print(float('-1.23'))
# -1.23
print(type(float('-1.23')))
# <class 'float'>
# print(float('abc'))
# ValueError: could not convert string to float: 'abc'
Уз руковање изузетком, може се дефинисати функција која враћа труе када се стринг може конвертовати помоћу флоат().
def is_num(s):
try:
float(s)
except ValueError:
return False
else:
return True
print(is_num('123'))
# True
print(is_num('-1.23'))
# True
print(is_num('+1.23e10'))
# True
print(is_num('abc'))
# False
print(is_num('10,000,000'))
# False
Ако желите да утврдите да је и број раздвојен зарезима тачан, користите реплаце() да уклоните зарез (замените га празним низом).
def is_num_delimiter(s):
try:
float(s.replace(',', ''))
except ValueError:
return False
else:
return True
print(is_num_delimiter('10,000,000'))
# True
Ако желите да подржите разграничење размака, можете даље користити реплаце().
def is_num_delimiter2(s):
try:
float(s.replace(',', '').replace(' ', ''))
except ValueError:
return False
else:
return True
print(is_num_delimiter2('10,000,000'))
# True
print(is_num_delimiter2('10 000 000'))
# True