input()和文字unicode解析

时间:2015-10-15 12:53:33

标签: python python-3.x input unicode unicode-literals

使用scala> l.cast[List[Int]] res9: Option[List[Int]] = Some(List(1, 2, 3)) 将反斜杠作为文字反斜杠,因此我无法使用unicode解析字符串输入。

我的意思是:

input()之类的字符串粘贴到"\uXXXX\uXXXX\uXXXX"调用中将被解释为input(),但我希望将其作为单个字符而不是两个单独的字符读取"\\uXXXX\\uXXXX\\uXXXX"

有谁知道如何或是否有可能实现这一目标?

编辑:我正在接受上面的输入并将其转换为ascii,如下面的..

\u

根据我标记的答案,正确的解决方案是:

import unicodedata

def Reveal(unicodeSol):
    solution = unicodedata.normalize('NFKD', unicodeSol).encode('ascii', 'ignore')
    print(solution)

while(True):
    UserInput = input("Paste Now: ")
    Reveal(UserInput)

1 个答案:

答案 0 :(得分:1)

如果您可以确定输入不包含引号,则可以通过在两端添加引号将输入转换为字符串文字表示,然后使用ast.literal_eval()将其计算为字符串。示例 -

import ast
inp = input("Input : ")
res = ast.literal_eval('"{}"'.format(inp))

如果输入可以包含引号,则可以在使用ast.literal_eval进行评估之前将双引号替换为r'\"'