Вставьте строки в словарь путей к файлам, используя регулярные выражения - PullRequest
1 голос
/ 06 июля 2019

поэтому у меня есть словарь путей к файлам, который выглядит следующим образом:

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

Я не слишком знаком с продвинутыми методами манипулирования строками и ищу питонский способ вставки строки '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

Я знаю, что регулярные выражения могут этого добиться, но я не знаю, как и хотел бы, чтобы кто-то показал мне, как это делается. Если есть способы, более питонические, чем регулярные выражения, которые могут достичь той же цели, не стесняйтесь показывать и мне, потому что здорово узнать больше способов достичь той же цели.

Заранее спасибо

Ответы [ 2 ]

1 голос
/ 06 июля 2019

Используя 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()
}
1 голос
/ 06 июля 2019

Вот один подход:

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