在Python中打印列表元素和字符串会产生不同的结果

时间:2017-01-20 12:05:51

标签: python python-2.7 csv

我有一个.csv文件,该文件以UTF-8编码。 我正在使用Python 2.7。 在Ubuntu上发生了一些相互影响的事情。 当我打印出这样的文件结果时:

with open("file.csv", "r") as file:
    myFile = csv.reader(file, delimiter = ",")
    for row in myFile:
        print row

我得到\xc3\x\xa1\等标志,请注意row是一个列表,我列表中的所有元素都被''标记为字符串在输出中。 当我打印出这样的结果时:

with open("file.csv", "r") as file:
    myFile = csv.reader(file, delimiter = ",")
    for row in myFile:
        print ",".join(row)

一切都被解码好了。请注意,原始文件中的每一行都是一个大字符串。

为什么?

1 个答案:

答案 0 :(得分:1)

这是因为在打印列表的情况下,Python正在使用repr(),但在打印字符串时,它使用的是str()。例如:

unicode_str = 'åäö'
unicode_str_list = [unicode_str, unicode_str]
print 'unwrapped:', unicode_str
print 'in list:', unicode_str_list
print 'repr:', repr(unicode_str)
print 'str:', str(unicode_str)

产地:

unwrapped: åäö
in list: ['\xc3\xa5\xc3\xa4\xc3\xb6', '\xc3\xa5\xc3\xa4\xc3\xb6']
repr: '\xc3\xa5\xc3\xa4\xc3\xb6'
str: åäö