2015-02-17 2 views
0

Я пытаюсь разобрать некоторые каталоги и идентифицировать папки, у которых нет определенного правильного шаблона. Приведем пример:Разбор каталогов и обнаружение неожиданных пробелов

Correct: Level1\\Level2\\Level3\\Level4_ID\\Date\\Hour\\file.txt 
Incorrect: Level1\\Level2\\Level3\\Level4\\Date\\Hour\\file.txt 

Обратите внимание, что неправильный идентификатор _ID. Моя последняя желанная цель является разбор данных, заменяющие «\» для разделителей для импорта для MS Excel:

Level1;Level2;Level3;Level4;ID;Date;Hour;file.txt 
Level1;Level2;Level3;Level4; ;Date;Hour;file.txt 

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

for i in arange(len(files)): 
    processed_str = files[i].replace(" ", "").replace("_", "\\") 
    processed_str = processed_str.split("\\") 

Мой вопрос обнаружение или нет папки LEVEL4 ли иметь идентификатор после подчеркивания, используя один и тот же сценарий, так как «файлы» содержит как правильные и неправильные каталоги. Проблема заключается в том, что, поскольку неправильное один не имеет идентификатор, после выполнения раскола («\») Я в конечном итоге, колонны смешанные без Blanck между Level4 и дата:

Level1;Level2;Level3;Level4;Date;Hour;file.txt 

Спасибо,

ответ

0

Выполняйте проверку «_ID» после разделения каталогов, таким образом вы не теряете информацию. Если предположить, что имена каталогов сами по себе не содержат сбежавших обратные слэши и что поле ID всегда в уровне 4 (считая с 1), это следует сделать это:

for i in arange(len(files)): 
    parts = files[i].split("\\") 
    if parts[3].endswith("_ID"): 
     parts.insert(4, parts[3][:-len("_ID")]) 
    else: 
     parts.insert(4, " ") 
    final = ";".join(parts) 
+0

спасибо, он работал хорошо. Я должен был сказать, что идентификатор - это номер, поэтому мой код был основан на вашем и адаптирован с использованием isDigit(). – dudas

Смежные вопросы