Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python打印unicode';异常';_Python_Unicode - Fatal编程技术网

python打印unicode';异常';

python打印unicode';异常';,python,unicode,Python,Unicode,我对以下几点感到困惑: >>> >>> a 'abc' >>> z u'xyz' >>> print a,z abc xyz >>> print (a,z) ('abc', u'xyz') >>> print [a,z] ['abc', u'xyz'] >>> print (a,str(z)) ('abc', 'xyz') 隐式类型转换完成与否的规则是什么?语句调用参

我对以下几点感到困惑:

>>> 
>>> a
'abc'
>>> z
u'xyz'
>>> print a,z
abc xyz
>>> print (a,z)
('abc', u'xyz')
>>> print [a,z]
['abc', u'xyz']
>>> print (a,str(z))
('abc', 'xyz')
隐式类型转换完成与否的规则是什么?

语句调用参数

>>> a = 'abc'
>>> z = u'xyz'
>>> str(a)
'abc'
>>> str(z)
'xyz'
>>> print a, z
abc xyz
>>> print str(a), str(z)
abc xyz

>>> str((a,z))
"('abc', u'xyz')"
>>> str([a,z])
"['abc', u'xyz']"
>>> print (a,z)
('abc', u'xyz')
>>> print str((a,z))
('abc', u'xyz')

Python 2不执行隐式类型转换,除非将Unicode字符串(属于
Unicode
类型)添加到字节字符串(属于
str
类型)中(Python 3从不执行隐式类型转换)
str
将对象转换为字节字符串(它进行显式转换,而不是隐式转换)。

这是unicode对象的
str
repr
之间的区别。
repr
用于在将对象粘贴回Python时提供一个等价的对象,因此它包括
u
str
是为人类可读性设计的,所以它不是。字符串的
str
repr
是相同的(它们只是相同的字符串)

此处使用的相关规则如下:

  • 在解释器提示符处提及变量会回显其
    repr
  • print
    使用
    str
  • print a,z
    打印由空格分隔的两个对象-它解析为
    print(a)、(z)
    。它使用这两种方法的
    str
  • print(a,z)
    构建并打印包含这两个对象的元组
    print[a,z]
    的行为类似,只是它构建并打印一个列表。在这两种情况下,
    print
    使用容器的
    str
    ——对于元组和列表,它都使用其内容的
    repr
  • print(a,str(z))
    首先调用
    str(z)
    ,并将其结果放入元组,因此使用该字符串的repr,而不是
    z
    的repr

区别在于是使用repr还是str。哦,我明白了,print不会在结构中重复出现。谢谢[这是在试图找出我从id3标签上的诱变剂与FLAC以及一些“诊断”输出中得到了什么,以确定我得到的是字符串还是unicode时弹出的]