Python - 列表中不同的单词显示,不同的显示为元素

时间:2017-01-11 18:19:48

标签: python utf-8

我的文件包含波兰语单词列表。文件加密为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分隔的给定单词的基本形式,但这在这里并不重要)。我想知道为什么会这样(特别是因为我必须得到每个单词的长度,我不确定它是否能正确完成)。

感谢任何提示。

1 个答案:

答案 0 :(得分:3)

print调用str - 字符串表示形式 - 用于其参数。当您只打印一个字符串时,这很有效。在第二种情况下,str被调用以获取字符串列表,但是list数据类型不使用str来构建其子元素的字符串表示,而是repr。这就是您获得未编码的转义表示的原因。您必须使用索引或循环来打印列表的单个元素,或者编写您自己的函数以获得更好的列表字符串表示。例如,这个:

def mystr(list):
    return '[' + ', '.join(['"' + str(e) + '"' for e in list]) + ']'