首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Psycopg2 UNICODEARRAY阵列

Psycopg2 UNICODEARRAY阵列
EN

Stack Overflow用户
提问于 2019-07-28 23:01:15
回答 1查看 34关注 0票数 0

我有这样的代码:

代码语言:javascript
复制
#!/usr/bin/python
import psycopg2
import psycopg2.extensions

conn = psycopg2.connect(dbname='my_database_name', ...)
cur = conn.cursor()

psycopg2.extensions.register_type(psycopg2.extensions.UNICODE, conn)
psycopg2.extensions.register_type(psycopg2.extensions.UNICODEARRAY, conn)

cur.execute("SELECT * FROM t0;")
res = cur.fetchall()

print conn.encoding
print res
print res[0][0] # Output is true
print [res[0][0]]

但输出结果是:

代码语言:javascript
复制
UTF8
[(u'\u0410\u0411', u'\u0412\u0413')]
АБ
[u'\u0410\u0411']

为什么只有第三行是真的?如何更改字母上的u‘\u*’?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-28 23:13:27

这里的问题很简单,就是Python2打印unicode类型的方式,这也是Python3在2008年创建的原因之一。

在Python 2中

代码语言:javascript
复制
$ python2
>>> s = u'АБ'
>>> type(s)
<type 'unicode'>
>>> print(s)
АБ
>>> print([s])
[u'\u0410\u0411']

但在Python 3中

代码语言:javascript
复制
$ python3
>>> s = u'АБ'
>>> type(s)
<class 'str'>    
>>> print(s)
АБ
>>> print([s])
['АБ']

对于您的问题“如何更好地打印字符串数组”,最简单的答案是“使用Python 3!”

然而,不幸的是,您可能会被Python 2卡住(如果是这样的话,很抱歉)。如果你坚持使用Python 2,你可以用以下命令来伪造它:

代码语言:javascript
复制
$ python2
>>> s = u'АБ'
>>> print([s])
[u'\u0410\u0411']
>>> print('[' + ''.join(s) + ']')
[АБ]

它不是很漂亮,但它是有效的。希望您能够切换到Python3(或者其他人可能会有一个比这个hack更好的Python2答案)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57242089

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档