当前位置:  开发笔记 > 编程语言 > 正文

如何将*any*Python对象转换为字符串?

如何解决《如何将*any*Python对象转换为字符串?》经验,为你挑选了1个好方法。

我想将各种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)

在这个SO答案中,我发现有人说我需要使用.encode('utf-8'),所以我将代码更改为:

' '.join([x.encode('utf-8') for x in the_list])

但是如果对象不是字符串或unicodes但是例如ints我得到了一个AttributeError: 'int' object has no attribute 'encode'.所以这意味着我需要使用某种if语句来检查它是什么类型以及如何转换它.但是什么时候应该使用.encode('utf-8'),什么时候应该使用str()

如果我也可以为此做一些oneliner会更好,但我不知道如何?还有其他人知道吗?欢迎所有提示!



1> Mark Tolonen..:

Python 2.x使用repr().repr()如果您不介意结果中的非ASCII Unicode,或者ascii()您执行以下操作,则使用Python 3.x :

>>> a=1             # integer
>>> class X: pass
...
>>> x=X()           # class
>>> y='\u5000'      # Unicode string
>>> z=b'\xa0'       # non-ASCII byte string
>>> ' '.join(ascii(i) for i in (a,x,y,z))
"1 <__main__.X object at 0x0000000002974B38> '\\u5000' b'\\xa0'"

2.X和3.X repr()以及3.X 之间差异的示例ascii():

>>> # Python 3
>>> s = 'pingüino' # Unicode string
>>> s
'pingüino'
>>> repr(s)
"'pingüino'"
>>> print(repr(s))
'pingüino'
>>> ascii(s)
"'ping\\xfcino'"
>>> print(ascii(s))
'ping\xfcino'    

>>> # Python 2
>>> s = u'pingüino'
>>> s
u'ping\xfcino'
>>> repr(s)
"u'ping\\xfcino'"
>>> print(repr(s))
u'ping\xfcino'

推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有