Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python将unicode字符串匹配为unicode_Python_Regex - Fatal编程技术网

Python将unicode字符串匹配为unicode

Python将unicode字符串匹配为unicode,python,regex,Python,Regex,我正在尝试匹配unicode字符串,以便unicode与字符串文字不匹配 def validate(username): if "admin" in username: return False else: return True validate(username) 如果我传递username=“\u0061\u0064\u006d\u0069\u006e”,它将返回False,因为它正在转换unicode,然后进行匹配,

我正在尝试匹配unicode字符串,以便unicode与字符串文字不匹配

def validate(username):
    if "admin" in username:
        return False
    else:
        return True

validate(username)

如果我传递
username=“\u0061\u0064\u006d\u0069\u006e”
,它将返回False,因为它正在转换unicode,然后进行匹配,
“\u0061\u0064\u006d\u0069\u006e”
是管理员的unicode。转换前是否有匹配的方法?输入未转换,它以unicode开头。我尝试过使用正则表达式,但没有成功。

在Python3中,“unicode”和“string”之间不再有区别。所以字符串
“\u0061\u0064\u006d\u0069\u006e”
只是一个字符字符串
a
d
m
i
n
,但使用unicode码点转义序列;这里没有“转换”,它完全等同于输入
“admin”

你想达到什么目标


请记住,字符串转义序列(如
\u0061
)是在Python解析过程中翻译的,它们实际上永远不会作为字符串的一部分结束。例如,如果用户将字符的文字字符串
\u0061\u0064\u006d\u0069\u006e
输入到文本表单中,则在Python表示法中,您将得到一个相当于
“\\u0061\\u0064\\u006d\\u0069\\u006e”
(注意转义的反斜杠,表示它们是文字反斜杠而不是转义序列)。

在我的示例中,我希望它返回True。我试图使它不匹配。没有办法使它不匹配,因为文字
“\u0061\u0064\u006d\u0069\u006e”
“admin”
是完全相同的字符串(或者更确切地说,它们是完全相同字符串的不同表示)。您可以为您想要使用它的目的提供更广泛的上下文吗?例如,这是用于验证web表单上的用户输入吗?在这种更广泛的上下文中,您希望避免什么?是的,它们是从web表单输入的。我正在尝试将用户输入列入黑名单,并尝试通过输入来实现唯一的方法。当我传递SQL时,它会正常工作e、 但是如果他们输入“admin”,我不希望它工作。问题是python在比较时会转换unicode,我不希望它转换。我们正在接近问题的根源。因此,要明确的是,您希望避免用户直接输入
\u0061\u0064\u006d\u0069\u006e
?或者以任何形式输入
admin
?您可以添加一个示例吗您提到的SQL以及表单的屏幕截图,以及您所做和不想做的事情的示例?如果没有更多详细信息,仍然很难帮助您,因为我真的不明白这是怎么回事。我希望如果输入
\u0061\u0064\u006d\u0069\u006e
,那么它将被转换为
admin