【问题标题】:add and print non-ASCII characters to a list-python将非 ASCII 字符添加并打印到 list-python
【发布时间】:2017-08-11 03:07:30
【问题描述】:

对于我所学的 Python,我一直在尝试——当你输入一个短语时——将它翻译成符号。我尝试了 maketrans() 函数,但没有奏效。这是我的代码:

# -*- coding: utf-8 -*-

message = "ab"
output = []
broke = list(message)
limit = len(broke)

for i in range(limit):
    if broke[i] == "a":
        output.append("¬")
    if broke[i] == "b":
        output.append("∆")

如果我执行 print output 我得到:['\xc2\xac'] 而不是 ¬。有什么办法可以解决这个问题吗?

【问题讨论】:

  • 你可能还应该标记python-2.7,因为它不会在python 3中发生
  • 好了,python-2.7 被标记了 :)

标签: python python-2.7 list utf-8


【解决方案1】:

在 python 3 中,打印列表不使用字符串转义,而在 Python 2 中则使用,因此在 python 3 中执行相同的操作将获得您想要的保存结果。要在 Python 2 中获得相同的结果,您必须这样做:

# -*- coding: utf-8 -*-
import sys

message = "ab"
output = []
broke = list(message)
limit = len(broke)

for i in range(limit):
    if broke[i] == "a":
        output.append("¬")
    if broke[i] == "b":
        output.append("∆")
msg = repr(output).decode('string-escape')
print msg

输出将是:

['¬', '∆']

【讨论】:

    【解决方案2】:

    output 是一个字符串列表。只需打印单个字符串:

    for out in output:
        print out
    

    【讨论】:

    • 我认为 OP 在问为什么它打印 ['\xc2\xac', '\xe2\x88\x86'] 而不是像 Python 3 中的 ['¬', '∆']
    • 嗯,也许吧,但 OP 说“...而不是 ¬”,所以听起来只是字符串而不是列表?
    • 猜猜我们必须等待 OP 澄清事情
    • @abccd 随意添加另一个关于 Python 2 和 3 之间差异的答案。即使 OP 不希望这样,看到这个问题的其他人也可能会。
    • 好的,我试试。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-04
    • 1970-01-01
    • 2010-12-14
    • 2021-11-29
    • 2013-02-18
    • 2013-03-29
    相关资源
    最近更新 更多