首页 > 解决方案 > 当我查询 MySQL 时,我得到一个带有 \u3000 的结果

问题描述

标签: pythonmysqlpython-3.xunicode

解决方案


您正在将每一行(一个元组)转换为字符串表示形式:

for i in interentname:
    i = str(i)

不要那样做。元组是一个值序列,对于您的特定查询,其中只有一个值,即name列的值。对元组进行索引以获取单个值:

for row in interentname:
    name = row[0]

您还可以使用元组赋值:

for row in interentname:
    name, = row

注意后面的逗号name,它告诉 Pythonrow必须是一个具有一个值的序列,并且应该将一个值分配给name. 您甚至可以在for循环目标中执行此操作:

for name, in interentname:
    print(name)

interentname是一个元组序列,而不仅仅是一个元组,所以每次迭代,你都会得到一个像这样的值:

>>> row = ('♚\u3000\u3000 恏',)

那里的\u3000代码点是 U+3000 IDEOGRAPHIC SPACE 字符,\uxxxx当表示字符串时,Python 将始终以转义符的形式回显(因为任何内容都将在标准容器中)。

通过将元组转换为字符串,您可以将表示捕获为字符串:

>>> str(row)
>>> str(row)
"('♚\\u3000\\u3000 恏',)"

Python 使用有效的 Python 语法表示元组,并且对字符串也使用有效的 Python 语法。但是从该输出中删除元组语法(因此"('在开头和',)结尾)不会给你正确的字符串值。

对元组对象进行索引可为您提供其中的值:

>>> row[0]
'♚\u3000\u3000 恏'
>>> print(row[0])
♚   恏

推荐阅读