使用正则表达式将字符串插入文件路径的字典中

时间:2019-07-06 15:40:09

标签: python regex python-3.x insert filenames

所以我有一个像这样的文件路径字典:

import os

main_path = r'C:\Users\User\Desktop\all python files'

dict_path_old2 = {'A': os.path.join(main_path, 'Alpha') + f'\\filenames.csv',
                 'B': os.path.join(main_path, 'Beta') + f'\dont have.csv',
                 'C': os.path.join(main_path, 'Charlie') + f'\\an obvious.csv',
                 'D': os.path.join(main_path, 'Delta') + f'\pattern.csv',
                 }

我对操纵字符串的高级技术不太熟悉,并且正在寻找一种Python方式将字典中每个值的文件名之前插入字符串'copy',以便新字典看起来像这个:

C:\Users\User\Desktop\all python files\Alpha\copy filenames.csv
C:\Users\User\Desktop\all python files\Beta\copy dont have.csv
C:\Users\User\Desktop\all python files\Charlie\copy an obvious.csv
C:\Users\User\Desktop\all python files\Delta\copy pattern.csv

我知道正则表达式可以实现此目的,但我不知道该如何做,并希望有人向我展示它是如何完成的。如果有比常规表达式更多的Python语言可以实现相同的目标,请随时向我展示,因为学习更多方法可以实现相同的目标非常好。

提前谢谢

2 个答案:

答案 0 :(得分:1)

这是一种方法:

for k, v in dict_path_old2.items():
    dict_path_old2[k] = re.sub(r'\\([^\\]+)$', '\copy \\1', dict_path_old2[k])

数据:

dict_path_old2 = {
    'A': 'C:\\Users\\User\\Desktop\\all python files\\Alpha\\filenames.csv',
    'B': 'C:\\Users\\User\\Desktop\\all python files\\ Beta\\filenames.csv',
    'C': 'C:\\Users\\User\\Desktop\\all python files\\Charlie\\filenames.csv',
    'D': 'C:\\Users\\User\\Desktop\\all python files\\Delta\\filenames.csv'
}

答案 1 :(得分:1)

使用os.path,您可以执行以下操作:

dict_path = {
   k: os.path.join(os.path.dirname(path), 'copy ' + os.path.basename(path))
   for k, path in dict_path_old.items()
}