【发布时间】:2015-12-17 16:52:40
【问题描述】:
我想将各种 Python 对象的列表连接成一个字符串。对象实际上可以是任何东西。我想我可以使用以下代码简单地做到这一点:
' '.join([str(x) for x in the_list])
但不幸的是,有时这会给我一个 UnicodeEncodeError:
UnicodeEncodeError: 'ascii' codec can't encode character u'\xa0' in position 80: ordinal not in range(128)
在this SO answer我发现有人说我需要使用.encode('utf-8'),所以我把我的代码改成这样:
' '.join([x.encode('utf-8') for x in the_list])
但如果对象不是字符串或 unicode,而是例如ints,我会得到一个AttributeError: 'int' object has no attribute 'encode'。所以这意味着我需要使用某种 if 语句来检查它是什么类型以及如何转换它。但是什么时候应该使用.encode('utf-8'),什么时候应该使用str()?
如果我也可以为此做某种单线器会更好,但我不知道怎么做?还有人知道吗?欢迎所有提示!
【问题讨论】:
-
除了“产生一个字符串”之外,你希望这个转换做什么?据推测,结果应该以某种方式代表原始对象,但究竟生成什么字符串有多大关系?
-
@user2357112 - 因为它主要用于记录目的,所以它有多接近并不重要。
-
那为什么不把你的清单打印出来呢?