Python: декодирование UTF16 добавляет новую пустую строку на окнах Windows - PullRequest
1 голос
/ 24 мая 2010

У меня проблема с дополнительными символами новой строки в Windows по сравнению с * nix платформами.

file = open('UTF16file.xml', 'rb')
html = file.read().decode('utf-16')
file.close()

regexp = re.compile(self.originalurl, re.S)
(html, changes) = regexp.subn(self.newurl, html)

file = open('UTF16file-regexed.xml', 'w+')
file.write(html.encode('utf-16'))
file.close()

Запуск этого кода на моем Mac работает - я возвращаю свой файл без лишних разрывов строк.До сих пор я пытался:

  1. Кодирование регулярного выражения как utf-16 вместо декодирования файла - ломается на Windows и OSX.* Запись в режиме 'wb' вместо 'w +' - ломается на Windows.

Есть идеи?

1 Ответ

0 голосов
/ 24 мая 2010
C:\Documents and Settings\Nick>python
ActivePython 2.6.4.10 (ActiveState Software Inc.) based on
Python 2.6.4 (r264:75706, Jan 22 2010, 16:41:54) [MSC v.1500 32 bit (Intel)]...
Type "help", "copyright", "credits" or "license" for more information.
>>> txt = """here
... is all
... my text n stuff."""
>>> f = open('u16.txt','wb')
>>> f.write(txt.encode('utf-16'))
>>> f.close()
>>> exit()

C:\Documents and Settings\Nick>notepad u16.txt

выглядит как:

here is allmy text n stuff.

(хотя, когда я копировал его из Блокнота в FF, он фактически вставлял разрывы строк) ... но это:

C:\Documents and Settings\Nick>
    "C:\Program Files\Windows NT\Accessories\wordpad.exe" u16.txt

выглядит как:

here 
is all
my text n stuff.

(в Windows XP с пакетом обновления 3 (SP3) 32-разрядная версия)

...