2

Usinginput()将反斜杠作为文字反斜杠,因此我无法使用 unicode 解析字符串输入。

我的意思是说:

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

有谁知道如何或如果可能的话?

编辑:我接受上述输入并将其转换为 ascii,如下所示..

import unicodedata

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

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

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

import unicodedata
import ast

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

while(True):
    UserInput = ast.literal_eval('"{}"'.format(input("Paste Now: ")))
    Reveal(UserInput)
4

1 回答 1

2

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

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

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

于 2015-10-15T13:04:11.397 回答