看來Python的UTF-8編碼(codecs
包)解釋Unicode字符28,29,和30行結尾。爲什麼?我怎麼能阻止它這樣做?Python的編解碼器行結束
示例代碼:
with open('unicodetest.txt', 'w') as f:
f.write('a'+chr(28)+'b'+chr(29)+'c'+chr(30)+'d'+chr(31)+'e')
with open('unicodetest.txt', 'r') as f:
for i,l in enumerate(f):
print i, l
# prints "0 abcde" with special characters in between.
的這裏一點是,它把它讀成一條線,我希望它做的事。現在,當我使用codecs
在UTF-8讀它,它解釋爲多行。
import codecs
with codecs.open('unicodetest.txt', 'r', 'UTF-8') as f:
for i,l in enumerate(f):
print i, l
# 0 a
# 1 b
# 2 c
# 3 de
# (again with the special characters after each a, b, c, d
字符28到31被描述爲「信息分隔符四」到「一個」(以該順序)。有兩件事引起我的注意:1)28至30被解釋爲行結束,2)31不行。這是預期的行爲?我在哪裏可以找到哪些字符被解釋爲行結束的定義?有沒有辦法不把它們解釋爲行結束?
謝謝。
編輯忘記複製codecs.open
中的'UTF-8'參數。我的問題中的代碼現在已更正。
如果以「rb''模式打開文件,會發生什麼情況? – unutbu
沒有區別。 – Paul
@保羅,你可以回答自己的問題,並接受它,如果你喜歡 –