我想到的是遍历一个文件夹,以检查文件名是否包含任何西里尔字母,如果包含,则将这些文件重命名为其他名称。
我该怎么办?
Python 3
该代码检查传递的字符串的每个字符,是否在西里尔字母块中,并返回True
该字符串中是否包含西里尔字符。默认情况下,Python3中的字符串是unicode。该函数将每个字符编码为utf-8,并检查是否产生两个字节来匹配包含西里尔字符的表块。
def isCyrillic(filename):
for char in filename:
char_utf8 = char.encode('utf-8') # encode to utf-8
if len(char_utf8) == 2 \ # check if we have 2 bytes and if the
and 0xd0 <= char_utf8[0] <= 0xd3\ # first and second byte point to
and 0x80 <= char_utf8[1] <= 0xbf: # Cyrillic block (unicode U+0400-U+04FF)
return True
return False
与ord()
注释中建议的功能相同
def isCyrillicOrd(filename):
for char in filename:
if 0x0400 <= ord(char) <= 0x04FF: # directly checking unicode code point
return True
return False
测试目录
cycont
|---- asciifile.txt
|---- кириллфайл.txt
|---- украї́нська.txt
|---- संस्कृत.txt
测试
import os
for (dirpath, dirnames, filenames) in os.walk('G:/cycont'):
for filename in filenames:
print(filename, isCyrillic(filename), isCyrillicOrd(filename))
输出
asciifile.txt False False
кириллфайл.txt True True
украї́нська.txt True True
संस्कृत.txt False False
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句