isnumeric(), isdigit(), isdecimal()辨析
1. 用法说明
- isdecimal(): True: Unicode数字,全角数字(双字节);False: 罗马数字,汉字数字,小数;Error: byte数字(单字节)
S.isdecimal() -> bool
- isdigit(): True: Unicode数字,byte数字(单字节),全角数字(双字节); False: 汉字数字,罗马数字,小数;Error: 无
S.isdigit() -> bool
- isnumeric(): True: Unicode数字,全角数字(双字节),罗马数字,汉字数字;False: 小数;Error: byte数字(单字节)
S.isnumeric() -> bool
代码示例
s = '123'
print(s.isdigit()) # output:True
print(s.isdecimal()) # output: True
print(s.isnumeric()) # output: True
s = b'123'
print(s.isdigit()) # output:True
print(s.isdecimal()) # output: error
print(s.isnumeric()) # output: error
s = '123.0'
print(s.isdigit()) # output: False
print(s.isdecimal()) # output: False
print(s.isnumeric()) # output: False
s = '三叁'
print(s.isdigit()) # output: False
print(s.isdecimal()) # output: False
print(s.isnumeric()) # output: True 神奇,汉字数字都可以识别
s = 'Ⅲ'
print(s.isdigit()) # output: Fasle
print(s.isdecimal()) # output: Fasle
print(s.isnumeric()) # output: True
s = '2a'
print(s.isdigit()) # output: False
print(s.isdecimal()) # output: False
print(s.isnumeric()) # output: False
Pandas代码示例:
import pandas as pd
df=pd.DataFrame({
'Score': [4.0,6,'3 1/3',7,'43a'],
'Foo': ['Nis','and stimpy','d','cab','abba'],
'Faggio':[0,1,0,1,0]
})
print(df)
df1 = df[df['Score'].str.isnumeric().isnull()]
print(df1)
df2 = df[df['Score'].str.isdigit().isnull()]
print(df2)
output:
| Score | Foo | Faggio |
|---|---|---|
| 0 | 4.0 | Nis |
| 1 | 6 | and stimpy |
| 2 | 3 1/3 | d |
| 3 | 7 | cab |
| 4 | 43a | abba |
| Score | Foo | Faggio |
|---|---|---|
| 0 | 4.0 | Nis |
| 1 | 6 | and stimpy |
| 3 | 7 | cab |
| Score | Foo | Faggio |
|---|---|---|
| 0 | 4.0 | Nis |
| 1 | 6 | and stimpy |
| 3 | 7 | cab |
浙公网安备 33010602011771号