python - str.is 字符集总结

这篇博客总结了Python中str.is系列方法涉及到的Unicode字符集,包括alnum、alpha、ascii、decimal、digit、numeric、printable、lower、upper和space等。文章通过实例展示了各种字符的数量,并讨论了如何处理大量字符输出导致的壳程序崩溃问题,采用字节码写入文件的方法来保存结果。此外,还提到了printable-alnum字符集的构成,包括符号、字根、盲文、语言字符等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

unicode字符表

在这里插入图片描述

l=['isalnum','isalpha','isascii','isdecimal','isdigit','islower','isnumeric','isprintable','isspace','isupper']
for s in l:
    exec(r'''t=0
c=0
for i in range(0x110000):
    if chr(i).{0}():
##        if t==0:
##            print('[',i)
##            t=1
        c+=1
##        print(repr(chr(i)),end='')
##    else:
##        if t==1:
##            print('\n',i-1,']\n')
##            t=0
print('敲回车继续\t','{0}',c)
input()
'''.format(s))
input('统计完毕,敲回车将退出程序')
list1=[]
for i in range(int(0x10FFFF)+1):
    s=chr(i)
    if s.isnumeric():list1.append(s)
len(list1)
open("numeric.txt","w+",encoding="UTF-8").write(str(list1))

str.is:个数
alnum:133022 数字+字符(文字)
alpha:131241
ascii:128 (基础用字符)
decimal:650(各种语言中的0~9)
digit:778(以上+0~9的各种序号+b’’ 二进制数)
numeric:1862(以上+其他序号+拥有数字意义的特殊字符+中文中的数字文字)
printable:143680 (打印的出的字符)
lower:2344 (小写)
upper:1911(大写)
space:29 (空格)

l=[]
for i in range(0x110000):
    if chr(i).isprintable():
        if not chr(i).isalnum():
            l.append(chr(i))

with open(r'c:\code\temp.txt','ba') as f:
    buf=bytearray((str(len(l))+str(l)).encode('utf'))
    f.write(buf)

因为内容太多,shell崩溃,于是输出至文件,因为不能用常规编码,就用字节码写入,还好记事本、浏览器等正常识别。

printable-alnum:10658 个,各种符号、字根、盲文、少数语言字符、单位符号、运算符号、图标等
!+¤֎௵₩↊℻℅≧⌚Ⓐ┿☠⣼⻊⿻㊚㍰㎾䷾꙰🂨🐅🖫😱🟈

性能分析:

printable=[]
for i in range(0x110000):
    if chr(i).isprintable():printable.append(i)
260 ms

for i in printable:pass
2.84 ms

因为会对各种类型的字符进行统计,所以还是运行一次之后,导出保存的好。

exec("ld=list(%s)"%open("alnum_del_alpha.txt","r",encoding="UTF-8").read())

exec("ln=list(%s)"%open("numeric.txt","r",encoding="UTF-8").read())

ld1=ld.copy()
ln1=ln.copy()
[(ld1.remove(i),ln1.remove(i)) for i in ld if i in ln]

ld1:[]
ln1:['㐅',
 '㒃',
 '㠪',
 '㭍',
 '一',
 '七',
 '万',
 '三',
 '九',
 '二',
 '五',
 '亖',
 '亿',
 '什',
 '仟',
 '仨',
 '伍',
 '佰',
 '億',
 '兆',
 '兩',
 '八',
 '六',
 '十',
 '千',
 '卄',
 '卅',
 '卌',
 '叁',
 '参',
 '參',
 '叄',
 '四',
 '壱',
 '壹',
 '幺',
 '廾',
 '廿',
 '弌',
 '弍',
 '弎',
 '弐',
 '拾',
 '捌',
 '柒',
 '漆',
 '玖',
 '百',
 '肆',
 '萬',
 '貮',
 '貳',
 '贰',
 '阡',
 '陆',
 '陌',
 '陸',
 '零',
 '參',
 '拾',
 '兩',
 '零',
 '六',
 '陸',
 '什',
 '𠀁',
 '𠁤',
 '𠃢',
 '𠄡',
 '𠤪',
 '𠦃',
 '𠦌',
 '𠦜',
 '𠫪',
 '𠫽',
 '𠬙',
 '𢎐',
 '𢦘',
 '𣬛',
 '𦉭',
 '廾']
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值