Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 13, 2013 12:57:50

aCL
Зарегистрирован: 2013-11-13
Сообщения: 34
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с записью строк в новый файл

Есть файл формата .txt, содержащий какое-то количество строк формата: “7903XXXXXXX Отключение Вашего номера ожидается дд.мм.гггг. Просим срочно погасить задолженность *sum* руб. Тел. для справок: (495)xxx-xx-xx или yyyy с мобильного.” Между некоторыми строками есть строки-разделители, формата “=== Диллер NN ===”. Задача: У строк, располагающихся между двумя разделителями, изменить окончание после слов “Тел. для справок:” и переписать в новый файл. Пользуюсь Python'ом пару дней, поэтому не судите строго.
Ввожу следующий код:

base=open('sms.txt').readlines()
out21=open('out21.txt','w')
a=base.index("=== Диллер NN ===\n")
b=base.index("=== Диллер KKK ===\n")
for line in base[a:b]:
    line1=line[:-36] + '8800nnnnnnn доб. kkk.\n'
    out21.write(line1)


Количество строк в диапазоне от a до b = 116. Если пользоваться print'ом, то всё выводит корректно - ровно 116 строк. Если производить запись в файл (неважно, write'ом или print'ом), то записывается только 113 строк. Если к b прибавить любое число 1<n<35 - всё равно строк в файле будет 113. Если прибавить n>35, то строк будет b+n. При этом при выводе на экран количество строк всегда будет корректное. Если записывать в файл исходные строки (line1), а исходные (line) из того же диапазона, то ситуация такая же, но количество строк - 103.
У строк, которые не записываются в файл, отличается только sum.

Подскажите, в чем проблема, будьте добры. А то всю голову себе уже поломал.

Заранее благодарен.

UPD: поправил код.
Выяснилось, что работает некорректно, только если запускать из IDLE'а. Если кликом по файлу *.py - всё ок. Не хотелось бы в дальнейшем с этим сталкиваться…
В чем фишка?

Отредактировано aCL (Ноя. 13, 2013 14:50:24)

Офлайн

#2 Ноя. 13, 2013 13:51:39

dimy44
От: Евпатория
Зарегистрирован: 2012-04-21
Сообщения: 463
Репутация: +  42  -
Профиль  

Проблема с записью строк в новый файл

код в тэги обверните- видете, вон даже срез от a до b парсер съел…

Офлайн

#3 Ноя. 13, 2013 15:49:33

dimy44
От: Евпатория
Зарегистрирован: 2012-04-21
Сообщения: 463
Репутация: +  42  -
Профиль  

Проблема с записью строк в новый файл

Наверно всё-же

...in base[a+1:b]:
вам же не нужно первый разделитель тоже править?

Офлайн

#4 Ноя. 13, 2013 22:31:10

Master_Sergius
Зарегистрирован: 2013-09-12
Сообщения: 271
Репутация: +  7  -
Профиль   Отправить e-mail  

Проблема с записью строк в новый файл

поставьте дебаггер и проверьте значения a, b, возможно где прикол из-за кириллицы



———————————————————————————
Мой блог о семействе *nix: http://nixtravelling.blogspot.com/

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version