Python 判断字符串是否为数字

Python 判断字符串是否为数字

进一步扩展到全角数字:

# 进一步扩展到全角数字

def is_number(s):

try:

float(s)

return True

except ValueError:

pass

import unicodedata

try:

unicodedata.numeric(s)

return True

except (TypeError, ValueError):

pass

if len(s) < 2:

return False

try:

d = 0

if s.startswith('-'):

s = s[1:]

for c in s:

if c == '-': # 全角减号

return False

if c == '.': # 全角点号

if d > 0:

return False

else:

d = 1

continue

unicodedata.numeric(c)

return True

except (TypeError, ValueError):

pass

return False

# 测试字符串和数字

print(f'{is_number("foo")}')

print(f'{is_number("1") }')

print(f'{is_number("1.3") }')

print(f'{is_number("-1.37") }')

print(f'{is_number("1e3") }')

print(f'{is_number("2.345.6") }')

print(f'{is_number("-5.2-8") }')

print(f'{is_number("52-8") }')

print(f'{is_number("-.5") }')

print(f'{is_number("-5.") }')

print(f'{is_number(".5") }')

# 测试Unicode

# 阿拉伯语 5

print(f'{is_number("٥") }')

# 泰语 2

print(f'{is_number("๒") }')

# 中文数字

print(f'{is_number("四") }')

print(f'{is_number("四卅") }')

# 全角数字

print(f'{is_number("123") }')

print(f'{is_number("-123") }')

print(f'{is_number("-123") }')

print(f'{is_number("12-3") }')

print(f'{is_number("123-") }')

print(f'{is_number("1.23") }')

print(f'{is_number("1.23") }')

print(f'{is_number(".23") }')

print(f'{is_number("-.23") }')

print(f'{is_number("1.23") }')

print(f'{is_number("1.2.3") }')

# 版权号

print(f'{is_number("©") }')leaf_cq leaf_cq

all***p@163.com

5年前 (2020-08-05)

相关推荐

当贝盒子H2怎么样?一图看懂当贝超级盒子H2和H1的配置区别
毒蛇,为什么有的蛇有毒?蛇毒是怎么来的?
365bet赌场手机投注

毒蛇,为什么有的蛇有毒?蛇毒是怎么来的?

📅 08-06 👁️ 4740
我的手机上最多可保存几个联系人?
365bet赌场手机投注

我的手机上最多可保存几个联系人?

📅 08-22 👁️ 4573
曾被捧上天的魅族17,为什么如今不火了?原因很现实
365bet赌场手机投注

曾被捧上天的魅族17,为什么如今不火了?原因很现实

📅 06-27 👁️ 4774
肝硬化视频直播
365bet赌场手机投注

肝硬化视频直播

📅 07-05 👁️ 1132
麻雀泛滥为什么没有人敢抓?没有灭绝的风险,为何还要被保护呢?
LoRa无线技术穿墙能力介绍
365bet赌场手机投注

LoRa无线技术穿墙能力介绍

📅 07-27 👁️ 4268
根号三怎么打?
365bet赌场手机投注

根号三怎么打?

📅 08-25 👁️ 6658
Excel快速插入行技巧,如何高效批量操作?
365bet赌场手机投注

Excel快速插入行技巧,如何高效批量操作?

📅 08-28 👁️ 2914