我的文件包含波兰语单词列表。文件加密为UTF-8 (with BOM), with CRLF line terminators
。我用以下内容加载整个文件:
dictionary = open('file.txt', 'r').readlines()
然后,当我想要打印单个元素时,它会正确打印:
print dictionary[104] -> abakusów
但是当我想要打印数组切片时,我得不到字符串中的解码字节,例如:
print dictionary[104:105] -> ['ABAKUS\xc3\x93W\tabakus\r\n']
(还有用tab分隔的给定单词的基本形式,但这在这里并不重要)。我想知道为什么会这样(特别是因为我必须得到每个单词的长度,我不确定它是否能正确完成)。
感谢任何提示。
答案 0 :(得分:3)
print
调用str
- 字符串表示形式 - 用于其参数。当您只打印一个字符串时,这很有效。在第二种情况下,str
被调用以获取字符串列表,但是list数据类型不使用str
来构建其子元素的字符串表示,而是repr
。这就是您获得未编码的转义表示的原因。您必须使用索引或循环来打印列表的单个元素,或者编写您自己的函数以获得更好的列表字符串表示。例如,这个:
def mystr(list):
return '[' + ', '.join(['"' + str(e) + '"' for e in list]) + ']'