参考文章: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")