input() 和文字 unicode 解析
input() and literal unicode parsing
使用 input()
将反斜杠作为文字反斜杠,因此我无法使用 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)
如果您可以确定输入不包含引号,您可以将输入转换为字符串文字表示,方法是在两端添加引号,然后使用 ast.literal_eval()
将其计算为字符串。例子-
import ast
inp = input("Input : ")
res = ast.literal_eval('"{}"'.format(inp))
如果输入可以包含引号,您可以在使用 ast.literal_eval 进行评估之前用 r'\"'
替换双引号。
使用 input()
将反斜杠作为文字反斜杠,因此我无法使用 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)
如果您可以确定输入不包含引号,您可以将输入转换为字符串文字表示,方法是在两端添加引号,然后使用 ast.literal_eval()
将其计算为字符串。例子-
import ast
inp = input("Input : ")
res = ast.literal_eval('"{}"'.format(inp))
如果输入可以包含引号,您可以在使用 ast.literal_eval 进行评估之前用 r'\"'
替换双引号。