Форум сайта python.su
И снова здравствуйте.
Подскажите пожалуйста, как подружить запись в файл и перенос строки?
Пытаюсь написать примитивный блокнот для Symbian 9.4 и столкнулся с данной проблемой. Введенный с телефона текст содержит несколько абзацев (т.е. содержит переносы строк), а записывается все это в виде одной строки. Открывал записанный файл в виндовом блокноте, PSPad'e и Notepad++ - абзацы, которые, как я уже говорил, записываются в одну строку, разделены неизвестным символом - квадратиком.
Меня уже посещает мысль - а не обрабатывать ли построчно текст?
Офлайн
'\n' -> ‘\r\n’
Офлайн
s0rgТ.е. мне с помощью string.replace надо будет обработать введенный текст? Я правильно Вас понял?
'\n' -> ‘\r\n’
Офлайн
при использовании
text = string.replace(encontent, “\n”, “\r\n”)
результат тот же самый - квадратики(
Офлайн
ну string не нужен, строки сами replace умеют:
text = encontent.replace("\n", "\r\n")
Офлайн
Возможно вы открываете файл в бинарном режиме а надо в текстовом
Офлайн
shepУвы, открываю в текстовом - filewrite = open(fullpath, ‘w’)
Возможно вы открываете файл в бинарном режиме а надо в текстовом
Офлайн
Только что проверил вариант с .replace(“\n”, “\r\n”) - файл прекрастно открылся под виндой.
Сделайте hex dump данных до replace и после.
Офлайн
надо сначала разобраться что за квадратики
notepad++ нормально показывает файлы и с “\xd\xa” и с “\xa”
Выделите в notepad ваш квадратик и
полагины -> конвертер-> ascii->hex
и посмотрите что получтися.
Еще проще в фаре просто посмотреть в hex что там записалось.
Офлайн
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)
Офлайн