2016-12-26 2 views
0

В рамках моего обучения. После того, как я успешно разделился с помощью, на следующем шаге я хотел узнать, могу ли я разбить имена файлов, когда имя месяца найдено в имени файла, которое соответствует имени месяца, указанного в этом списке ниже - -
Месяцы = [«Январь», «Февраль», «Март», «Апрель», «Май», «Июнь», «Июль», «Август», «Сентябрь», «Октябрь», «Ноябрь», 'Декабрь'].Разделение имени, когда слово совпадает с одним в массиве?

Когда мое имя файла, как это 1.Non IVR Записи сделок December_16_2016_07_49_22 PM.txt 2.Denied_Calls_SMS_Sent_December_14_2016_05_33_41 PM.txt

Пожалуйста, обратите внимание, что имена файлов не same..ie почему я должен разделите его как Не IVR Записи транзакций как одна часть и декабрь_16_2016_07_49_22 PM как еще один.

import os 
import os.path 
import csv 
path = 'C:\\Users\\akhilpriyatam.k\\Desktop\\tes' 
text_files = [os.path.splitext(f)[0] for f in os.listdir(path)] 
for v in text_files: 
    print (v[0:9]) 
    print (v[10:]) 
os.chdir('C:\\Users\\akhilpriyatam.k\\Desktop\\tes') 
with open('file.csv', 'wb') as csvfile: 
thedatawriter = csv.writer(csvfile,delimiter=',') 
for v in text_files: 
    s = (v[0:9]) 
    t = (v[10:]) 
    thedatawriter.writerow([s,t]) 

ответ

0
import re 
import calendar 
fullname = 'Non IVR Entries Transactions December_16_2016_07_49_22 PM.txt' 
months = list(calendar.month_name[1:]) 
regex = re.compile('|'.join(months)) 
iter = re.finditer(regex, fullname) 
if iter: 
    idx = [it for it in iter][0].start() 
    filename, timestamp = fullname[:idx],fullname[idx:-4] 
    print filename, timestamp 
else: 
    print "Month not found" 

Предполагая, что вы хотите, имя файла и метку времени, как расколы и месяц происходит только один раз в строке, я надеюсь, что следующий код решает вашу проблему.

+0

Привет, У меня есть разные имена файлов, если я запускаю их в цикле, я все равно получаю только Non ivr. Что-то не так, и я не могу понять, что! –

+0

Не могли бы вы дать ссылку на некоторые примеры строк в csv, которые вы используете? –

+0

Я нашел ответ. благодаря –