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

本文介绍了一个使用Python编写的文件名检查程序,该程序能够检查文件名中是否包含全角字符、特殊字符及日文等非标准字符,并在发现这些问题时抛出异常。通过对文件名进行逐一检查,可以有效避免因文件名格式不当而引发的问题。

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

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…')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

篮球小童_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值