替换Python文件名中的点
我试图用下划线替换文件名中的所有点(和重音,但已经完成了),当然除了扩展名点。 我看到了很多解决方案,但主要是bash。找不到用于python的。也许我应该使用正则表达式,但在这里没有太多经验。下面是我的代码:替换Python文件名中的点,python,Python,我试图用下划线替换文件名中的所有点(和重音,但已经完成了),当然除了扩展名点。 我看到了很多解决方案,但主要是bash。找不到用于python的。也许我应该使用正则表达式,但在这里没有太多经验。下面是我的代码: path2 = 'xx' dicto = {"ą":"a", "ś":"s", "ę":"e", "ć":"c", "ż":"z", "ź":"z", "ó":"o",
path2 = 'xx'
dicto = {"ą":"a",
"ś":"s",
"ę":"e",
"ć":"c",
"ż":"z",
"ź":"z",
"ó":"o",
"ł":"l",
"ń":"n"}
def find_replace(string, dictionary):
for item in string:
if item in dictionary.keys():
string = string.replace(item, dictionary[item])
return string
def change_name(path=path2):
for root, dirs, files in os.walk(path):
for filename in files:
if not filename.startswith('~'):
os.rename(os.path.join(root,filename), os.path.join(root,find_replace(filename, dicto)))
change_name()
仅在文件名的第一部分签出并替换点。仅在文件名的第一部分签出并替换点。这里有许多现有的答案可以从python中的Unicode文本中删除变音符号。python3有一个
unidecode
库,它完全满足您的需要
这里有许多现有的答案,可以从python中的Unicode文本中删除变音符号。python3有一个
unidecode
库,它完全满足您的需要
只要使用
导入unidecode
打印(unidecode.unidecode('261śęćżźó322;))
输出:
aseczzoln
只用
导入unidecode
打印(unidecode.unidecode('261śęćżźó322;))
输出:
aseczzoln
您可以查看将非拉丁unicode字母转换为普通ASCII的模块。您可以查看将非拉丁unicode字母转换为普通ASCII的模块。@Rafał-这将使您的变音符号替换更容易、更可靠。尽管如此,dot问题仍然悬而未决。使用正则表达式。@S3DEV我不能使用unicode,因为我不能安装新软件包。我要的是正则表达式解决方案。我应该如何使用it@Rafał-理解。我建议您用这个要求更新您的问题,因为您的回答中有2/3建议使用
unidecode
模块,因为我们不知道您不能安装新软件包。除此之外,我发现这是一个非常有用的方法。而且,@Rafał-这将使你的变音符号的替换更容易、更健壮。尽管如此,dot问题仍然悬而未决。使用正则表达式。@S3DEV我不能使用unicode,因为我不能安装新软件包。我要的是正则表达式解决方案。我应该如何使用it@Rafał-理解。我建议您用这个要求更新您的问题,因为您的回答中有2/3建议使用unidecode
模块,因为我们不知道您不能安装新软件包。除此之外,我发现这是一个非常有用的方法。和。