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

Python-列表中不同的单词显示,不同的元素显示,python,utf-8,Python,Utf 8,我有一个包含波兰语单词列表的文件。文件编码为UTF-8(带BOM),带有CRLF行终止符。我用以下内容加载整个文件: dictionary = open('file.txt', 'r').readlines() 然后,当我想要打印单个元素时,它被正确打印: print dictionary[104] -> abakusów 但当我想要打印数组切片时,我得到的不是字符串中的解码字节,如: print dictionary[104:105] -> ['ABAKUS\xc3\x93W\

我有一个包含波兰语单词列表的文件。文件编码为UTF-8(带BOM),带有CRLF行终止符。我用以下内容加载整个文件:

dictionary = open('file.txt', 'r').readlines()
然后,当我想要打印单个元素时,它被正确打印:

print dictionary[104] -> abakusów
但当我想要打印数组切片时,我得到的不是字符串中的解码字节,如:

print dictionary[104:105] -> ['ABAKUS\xc3\x93W\tabakus\r\n']
(给定单词也有基本形式,用tab分隔,但这在这里并不重要)。我想知道为什么会这样(特别是因为我必须知道每个单词的长度,我不确定是否能正确完成)


谢谢你的提示。

print
调用
str
——一种字符串表示法——作为参数。当您只打印一个字符串时,这会很好地工作。在第二种情况下,为字符串列表调用
str
,但列表数据类型不使用
str
来构建其子元素的字符串表示,而是使用
repr
。这就是为什么会得到未编码的转义表示。您必须使用索引或循环来打印列表中的单个元素,或者编写自己的函数来获得更好的列表字符串表示形式。例如,这:

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

print
为其参数调用
str
——字符串表示法。当您只打印一个字符串时,这会很好地工作。在第二种情况下,为字符串列表调用
str
,但列表数据类型不使用
str
来构建其子元素的字符串表示,而是使用
repr
。这就是为什么会得到未编码的转义表示。您必须使用索引或循环来打印列表中的单个元素,或者编写自己的函数来获得更好的列表字符串表示形式。例如,这:

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

尝试
print repr(“abakusów”)
会得到相同的
'abakus\xc3\xb3w'
,因为
list
使用递归调用
\uuuu repr\uuuuuu
来打印它包含的对象。这只是打印内容的问题,但数据是相同的。请尝试
打印字典[104:105][0]
或使用
print“,”,join(list)
手动将列表元素转换为一个字符串,然后再打印。顺便说一句:请参阅Facebook上的波兰语组:尝试
print repr(“abakusów”)
您会得到相同的
'abakus\xc3\xb3w'
,因为
列表
使用递归调用
\uuuuu repr\uuuu
来打印它包含的对象。这只是打印内容的问题,但数据是相同的。请尝试使用
打印字典[104:105][0]
或使用
print“,”,join(list)
手动将列表元素转换为一个字符串,然后再打印。顺便说一句:请参阅Facebook上的波兰语组: