python 判断字符串为全角

参考文章:Python实现全角与半角相互转换
python实现全角半角的相互转换

# coding=utf-8


# 文件名长度大小
fileNameLengthLIMIT = 20


# 自定义异常
class CustomError(Exception):
    def __init__(self, ErrorInfo):
        super().__init__(self)  # 初始化父类
        self.errorinfo = ErrorInfo

    def __str__(self):
        return self.errorinfo


#   检查文件名是否为全角、中括号、`~!@#$%^&*`/\ 、文件名长度、文件大小
def check_file_name(files_name):
    if len(files_name) > fileNameLengthLIMIT:
        raise CustomError('文件名长度不符合要求')
    check_string_isfullwidth(files_name)


# 检查字符串是否为全角
def check_string_isfullwidth(files_name):
    for char in files_name:
        try:
            check_char_isfullwidth(char)
        except CustomError as e:
            raise CustomError(files_name+e.errorinfo+"\t")

# 检查字符是否为全角
def check_char_isfullwidth(uchar):
    inside_code = ord(uchar)
    # 全角空格
    if inside_code == 12288:
        raise CustomError('全角空格')
    # 全角字符(除空格)根据关系转化
    elif 65281 <= inside_code <= 65374:
        raise CustomError('全角字符:'+uchar)
    return uchar


if __name__ == '__main__':
    #   中文文字永远是全角,只有英文字母、数字键、符号键才有全角半角的概念,一个字母或数字占一个汉字的位置叫全角,占半个汉字的位置叫半角。
    #   空格需要特殊转换 全角 半角 0x3000 0x0020
    #   全角字符unicode编码从65281~65374 (十六进制 0xFF01 ~ 0xFF5E)
    #   半角字符unicode编码从33~126 (十六进制 0x21~ 0x7E)
    fileNameList = [" word.txt","word.txt","123.txt","文件.txt",
                    " 文件.txt","1234567891012345678910","123.txt"]
    for i in fileNameList:
        print("文件名\t"+i)
        try:
            check_file_name(i)
        except CustomError as e:
            print(e)
        print("\n")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值