替换Python文件名中的点

替换Python文件名中的点,python,Python,我试图用下划线替换文件名中的所有点(和重音,但已经完成了),当然除了扩展名点。 我看到了很多解决方案,但主要是bash。找不到用于python的。也许我应该使用正则表达式,但在这里没有太多经验。下面是我的代码: path2 = 'xx' dicto = {"ą":"a", "ś":"s", "ę":"e", "ć":"c", "ż":"z", "ź":"z", "ó":"o",

我试图用下划线替换文件名中的所有点(和重音,但已经完成了),当然除了扩展名点。 我看到了很多解决方案,但主要是bash。找不到用于python的。也许我应该使用正则表达式,但在这里没有太多经验。下面是我的代码:

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
模块,因为我们不知道您不能安装新软件包。除此之外,我发现这是一个非常有用的方法。和。