Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 17, 2015 07:38:39

Sherkhan
Зарегистрирован: 2015-06-16
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

нарушен порядок строк при выводе в файл

Выше отправил выходной файл, тут прикрепил файл с шаблонами

Прикреплённый файлы:
attachment trains_way.mis (69,7 KБ)

Офлайн

#2 Июнь 17, 2015 07:53:52

Sherkhan
Зарегистрирован: 2015-06-16
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

нарушен порядок строк при выводе в файл

Перезалил выходной файл с возвращёнными символами конца строки

Прикреплённый файлы:
attachment mds.mis (16,6 KБ)

Офлайн

#3 Июнь 17, 2015 08:22:42

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

нарушен порядок строк при выводе в файл

Ну как-то так, если правильно понял что нужно

import os
# sample data
template = '/home/pooh/tmp/1'
all_trains = [('1_Chief', 'Trains.USSR_TovarSostav 1', '26000_Chief'),
     ('2_Chief', 'Trains.USSR_FuelCargo 1', '26001_Chief')]
#end sample data
input_filename = os.path.join(template, 'trains_way.mis')
output_filename = os.path.join(template, 'mds.mis')
trains_dict = {k: v for k, _, v in all_trains}
in_seq = False
with open(input_filename) as inf:
    with open(output_filename, 'w') as outf:
        for line in inf:           
            if line.startswith('['):                
                train = trains_dict.get(line.strip()[1:-6], None) # delete '[' and  '_Road]' from line for key
                if train:
                    outf.write('[%s_Road]\n' % train)
                    in_seq = True
                else:
                    in_seq = False
            elif in_seq:                
                outf.write(line)

PS: Бесит, что форматер кода на форуме вырезает пустые стороки, они вообще-то смысл выделяют



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Отредактировано PooH (Июнь 17, 2015 08:25:25)

Офлайн

#4 Июнь 17, 2015 08:36:51

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

нарушен порядок строк при выводе в файл

with open(input_filename) as inf:
   
    with open(output_filename, 'w') as outf:
        for line in inf:           
   
            if line.startswith('['):        
           
                train = trains_dict.get(line.strip()[1:-6], None) # delete '[' and  '_Road]' from line for key
                if train:
                    outf.write('[%s_Road]\n' % train)
                    in_seq = True
                else:
   
                    in_seq = False
            elif in_seq:                
                outf.write(line)
Магия



Офлайн

#5 Июнь 17, 2015 08:48:44

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

нарушен порядок строк при выводе в файл

FishHook
Магия
Ээээ… а что не так?

line.strip()[1:-6]
? ну грубовато да, надо в функцию типа prepare_to_key, но для скрипта сойдет

with open(input_filename) as inf:
    with open(output_filename, 'w') as outf:
?

У меня сейчас под рукой только 2.7, а
from contextlib import nested
не хотел ТС пугать, он и так пока в питоне плавает .



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#6 Июнь 17, 2015 08:51:20

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

нарушен порядок строк при выводе в файл

PooH
Ээээ… а что не так?
Да всё так, это я тебя пустыми строками в коде троллю



Офлайн

#7 Июнь 17, 2015 08:54:50

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

нарушен порядок строк при выводе в файл

FishHook
PooH
Ээээ… а что не так?
Да всё так, это я тебя пустыми строками в коде троллю
Как?! Кааааак ты это делаешь?????!!!!

ЗЫ: Вот я лох, сейчас посмотрел
with A() as a, B() as b:
    suite
оказывается в 2,7 и появилось, а я всегда, думал что только в третей ветке :)



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#8 Июнь 17, 2015 09:00:16

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

нарушен порядок строк при выводе в файл

PooH
Кааааак ты это делаешь
пробел



Офлайн

#9 Июнь 17, 2015 09:09:00

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

нарушен порядок строк при выводе в файл

FishHook
PooH
Кааааак ты это делаешь
пробел
дааа… мог бы и сам сообразить
старею… тупею…



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#10 Июнь 17, 2015 09:40:03

Sherkhan
Зарегистрирован: 2015-06-16
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

нарушен порядок строк при выводе в файл

trains_dict = {k: v for k, _, v in all_trains}
на эту строку ругается (неверный синтаксис)
Python 2.4

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version