Добавление верблюжьей оболочки и подчеркивания в имени файла с текстом, номером и датой - PullRequest
0 голосов
/ 19 апреля 2020

Относительно новый с python и pandas, поэтому здесь нужны некоторые входные данные. Цените некоторый ответ здесь. У меня есть несколько файлов с именем файла, имеющим комбинацию текста, числа и даты. Я хочу иметь верблюжий корпус с подчеркиванием и обрезкой пробела до стандартного формата, например,

FileName- ARA Ino c Время начала V34 20200418 .xlsx будет именоваться Ara_Inoc_Start_Time_V34_20200418.xlsx

FileName- Время начала пакета V3 20200418.xlsx будет именоваться Batch_Start_Time_V3_20200418.xlsx

Проблема, с которой я сталкиваюсь, заключается в следующем: 1) как добавить подчеркивание перед датой? 2) со словом в имени файла, например ARA Ino c Start - мой код преобразует его в A_R_A _Ino c _Start. Как адаптировать его к Ara_Ino c? это также может привести к обрезке белого пространства. Как добавить его в текущий код.

def change_case(str): 
    res = [str[0].upper()] 
    for c in str[1:]: 
        if c in ('ABCDEFGHIJKLMNOPQRSTUVWXYZ'): 
            res.append('_') 
            res.append(c.upper()) 
        else: 
            res.append(c) 

    return ''.join(res) 

# Driver code 

for filename in os.listdir("C:\\Users\\t\\Documents\\DummyData\\"):
    str = filename
    print(change_case(str)) 

1 Ответ

0 голосов
/ 19 апреля 2020

Разделите строки, используя str.split(), преобразуйте первую букву, используя str.upper(), затем соедините их, используя str.join()

import os
for filename in [
    ' ARA Inoc Start Times V34 20200418.xlsx  ', 
    ' Batch_Start_Time_V3_20200418.xlsx '
]:  #  os.listdir('C:\\Users\\t\\Documents\\DummyData\\')
    new_filename = '_'.join([i[:1].upper()+i[1:].lower() for i in filename.strip().split()])
    print(new_filename) 

Вывод:

Ara_Inoc_Start_Times_V34_20200418.xlsx
Batch_start_time_v3_20200418.xlsx

Обратите внимание на использование i[:1].upper()+i[1:] вместо str.title(). Вы можете использовать последнее, но это также преобразует расширение файла в регистр заголовка, поэтому я и использовал вышеупомянутое. Кроме того, вы можете разделить имя файла и расширение перед выполнением преобразования:

import os
for filename in[
    ' ARA Inoc Start Times V34 20200418.xlsx  ', 
    ' Batch_Start_Time_V3_20200418.xlsx '
]:
    filename, ext = filename.rsplit('.', 1)
    filename = '_'.join([i.title() for i in filename.strip().lower().split()])
    new_filename = '.'.join([filename, ext])
    print(new_filename) 

Вывод:

Ara_Inoc_Start_Times_V34_20200418.xlsx  
Batch_Start_Time_V3_20200418.xlsx 
...