python判断全角半角和特殊字符

import os
import re

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):
    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)

# 检查字符是否为全角
def check_char_isfullwidth(uchar):

    inside_code = ord(uchar)
    jap = re.compile(r'[\u3040-\u309F\u30A0-\u30FF\u4e00-\u9fa5]')
    jap1 = re.compile(r'[\\/:{};,$@&*?"<>|%\#]+')
    jap2 = re.compile(r'[\u0020]+')
    # 全角空格
    if inside_code == 12288:
        raise CustomError('全角スペースが含まれている')
    # 全角字符(除空格)根据关系转化
    elif 65281 <= inside_code <= 65374:
        raise CustomError('全角キャラクタが含まれている:'+uchar)
    # 日文有
    elif jap.search(uchar):
        raise CustomError('日本語が含まれている:'+uchar)
    elif jap1.search(uchar):
        raise CustomError('特別なキャラクタが含まれている:'+uchar)
    elif jap2.search(uchar):
        raise CustomError('半角スペースが含まれている:'+uchar)
    return uchar

base_dir = os.getcwd()  # 当前目录
ff = []
for path, direction, files in os.walk(base_dir):
    for file in files:
        ff.append(os.path.join(path, file))

fd = [f.split('\\')[-1] for f in ff]
print('すべてのファイル:', fd);
print('========================');
print('ファイル名不正一覧');
print('========================');
for i in fd:
    try:
        check_file_name(i)
    except CustomError as e:
        print(e)
print('========================');
input('Press Enter to exit…')

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐