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

Python 使用正则表达式将字符串插入文件路径字典,python,regex,python-3.x,insert,filenames,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',

因此,我有一个文件路径字典,如下所示:

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',
                 }
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
我不太熟悉操作字符串的高级技术,正在寻找一种pythonic方法,为字典中的每个值在文件名之前插入字符串
'copy'
,因此新字典如下所示:

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',
                 }
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
我知道正则表达式可以实现这一点,但我不知道如何实现,希望有人告诉我如何实现。如果有比正则表达式更具pythonic风格的方法可以实现相同的目标,那么也可以向我展示,因为学习更多实现相同目标的方法非常好

提前感谢

这里有一种方法:

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'
}

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

dict\u路径={
k:os.path.join(os.path.dirname(path),'copy'+os.path.basename(path))
对于k,dict_path_old.items()中的路径
}

刚刚运行了代码;它引发了一个错误。
AttributeError:“dict”对象没有属性“iteritems”
尝试用
items()
替换
items()
,它引发了另一个错误:
错误:错误转义\c
我的代码。我只能猜测,也许您运行的不是我正在运行的。原因可能是我使用的是Python 3.7.3,演示版是2.7.12。请注意,
os.path
接受多个位置参数,因此您可以使用
os.path.join(main_path,'Alpha',f'filenames.csv')
等等。实际上,不这样做并且包含
\\
将破坏可移植性,我认为这是使用
os.path
的首要目的。请注意,使用
os.path
我们可以很好地构建一个可移植的解决方案,如果使用Regex,这将更加困难。我非常感谢。因此,将来每当我开始处理路径时,我都应该在regex之前考虑os.path?我不确定是否应该使用regexp来处理性能关键的代码,但根据经验,我建议使用
os.path
来处理路径