首页 > 解决方案 > Python将unicode字符串匹配为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 开始。我尝试过使用正则表达式,但没有成功。

标签: pythonregex

解决方案


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

你想达到什么目的?

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


推荐阅读