python - 在Python中打印列表元素和字符串有不同的结果

标签 python python-2.7 csv

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

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)

一切都很好地解码。请注意,我的原始文件中的每一行在这里都是一个大字符串。

这是为什么?

最佳答案

这是因为在打印列表时,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: åäö

关于python - 在Python中打印列表元素和字符串有不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41763295/

相关文章:

python - Azure databricks 和 Python 虚拟环境

python - 使用 Python 从 csv 文件读取特定日期范围

python - 导入错误: cannot import name SMTP_SSL

csv - 在 Golang 中访问 for 循环之外的变量

使用 Django jquery ajax 文件上传

python - Dask Dataframe 将列表的列拆分为多列

python - 在Python中将树结构转换为csv的最有效方法的研究

java - 为什么这声称我没有括号[]

Python执行程序改变路径

python - 如何在 poplib 中仅搜索包含附件的电子邮件