Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 5, 2012 14:02:18

MadMax
От:
Зарегистрирован: 2012-01-04
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Запись в файл и переносы строк

И снова здравствуйте.
Подскажите пожалуйста, как подружить запись в файл и перенос строки?
Пытаюсь написать примитивный блокнот для Symbian 9.4 и столкнулся с данной проблемой. Введенный с телефона текст содержит несколько абзацев (т.е. содержит переносы строк), а записывается все это в виде одной строки. Открывал записанный файл в виндовом блокноте, PSPad'e и Notepad++ - абзацы, которые, как я уже говорил, записываются в одну строку, разделены неизвестным символом - квадратиком.

Меня уже посещает мысль - а не обрабатывать ли построчно текст?



Офлайн

#2 Янв. 5, 2012 14:15:54

s0rg
От:
Зарегистрирован: 2011-06-05
Сообщения: 777
Репутация: +  25  -
Профиль   Отправить e-mail  

Запись в файл и переносы строк

'\n' -> ‘\r\n’

Офлайн

#3 Янв. 5, 2012 14:25:19

MadMax
От:
Зарегистрирован: 2012-01-04
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Запись в файл и переносы строк

s0rg
'\n' -> ‘\r\n’
Т.е. мне с помощью string.replace надо будет обработать введенный текст? Я правильно Вас понял?



Офлайн

#4 Янв. 5, 2012 14:33:22

MadMax
От:
Зарегистрирован: 2012-01-04
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Запись в файл и переносы строк

при использовании
text = string.replace(encontent, “\n”, “\r\n”)
результат тот же самый - квадратики(



Офлайн

#5 Янв. 5, 2012 15:03:20

s0rg
От:
Зарегистрирован: 2011-06-05
Сообщения: 777
Репутация: +  25  -
Профиль   Отправить e-mail  

Запись в файл и переносы строк

ну string не нужен, строки сами replace умеют:

text = encontent.replace("\n", "\r\n")
Если в кратце то:
http://ru.wikipedia.org/wiki/%D0%9F%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4_%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8

Офлайн

#6 Янв. 5, 2012 15:08:46

shep
От:
Зарегистрирован: 2011-07-02
Сообщения: 19
Репутация: +  2  -
Профиль   Отправить e-mail  

Запись в файл и переносы строк

Возможно вы открываете файл в бинарном режиме а надо в текстовом



Офлайн

#7 Янв. 5, 2012 15:44:56

MadMax
От:
Зарегистрирован: 2012-01-04
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Запись в файл и переносы строк

shep
Возможно вы открываете файл в бинарном режиме а надо в текстовом
Увы, открываю в текстовом - filewrite = open(fullpath, ‘w’)



Офлайн

#8 Янв. 5, 2012 16:18:50

s0rg
От:
Зарегистрирован: 2011-06-05
Сообщения: 777
Репутация: +  25  -
Профиль   Отправить e-mail  

Запись в файл и переносы строк

Только что проверил вариант с .replace(“\n”, “\r\n”) - файл прекрастно открылся под виндой.
Сделайте hex dump данных до replace и после.

Офлайн

#9 Янв. 5, 2012 16:19:26

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Запись в файл и переносы строк

надо сначала разобраться что за квадратики
notepad++ нормально показывает файлы и с “\xd\xa” и с “\xa”
Выделите в notepad ваш квадратик и
полагины -> конвертер-> ascii->hex
и посмотрите что получтися.
Еще проще в фаре просто посмотреть в hex что там записалось.



Офлайн

#10 Янв. 5, 2012 16:29:35

MadMax
От:
Зарегистрирован: 2012-01-04
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Запись в файл и переносы строк

Notepad++ говорит, что квадратик - это E280A9
Вот, кстати, кусок функции, пишущей в файл:

filename = appuifw.query(ru("Введите название файла"), "text")
if filename:
fullpath = str(filename) + ".txt"
fullpath = "c:\\" + fullpath
if os.path.exists(fullpath) == 0:
filewrite = open(fullpath, 'w')
content = Text.get()
encontent = content.encode("UTF-8")
filewrite.write(encontent)
filewrite.close()
appuifw.note(ru("Файл " + fullpath + " сохранен!"), "info")



Отредактировано (Янв. 5, 2012 16:38:43)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version