我有一个要求,我应该存储在数据库中的用户名。这些名称的一般格式是local\username。我偶然发现的用户名之一是local\uat10215。我得到以下错误。你知道吗
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 5-6: truncated \uXXXX escape
虽然我了解这个问题,但从来没有遇到过它,我不知道什么可以解决这个问题。你知道吗
编辑:
这是我正在进行的Django项目的一部分。它有自己的User
模型,其中用户名是字段之一。我有用户名/密码组合用于身份验证。我们还有基于SAML的身份验证,其中IdP是第三方。现在,这个IdP的用户名存储在其一侧,我们只需在应用程序中使用用户模型来引用它。所以实际上,username字段的值不在我的控制之下,值是任何东西。我昨天偶然发现的一个用户名值是local\uat10215
。我试图用这个值来更新一个用户的用户名,以便通过shell进行测试,但是出现了上面的错误。如果我使用r'local\uat10215'
,那么存储在db中的值是local\\uat10215
,它与local\uat10215
不匹配。至于可复制的代码,只需在ipython
中尝试即可
更多信息:
我只是写了这个函数
def bs_test():
try:
username = r'local\uat10125'
print(username)
except Exception as e:
print('Exception')
下面是输出。你知道吗
基于此,我认为是伊普顿的行为让我偏离了正轨。你知道吗
我尝试的另一件事是将这样的值从iPython存储到数据库(Postgres)中。我附上屏幕截图演示的操作与输出一起进行。你知道吗
您至少应该提供一个生成错误的代码行的示例。你知道吗
不过,我想您应该尝试像这样对原始字符串单引号
r'local\uat10215'
另一种解决方案可能是双转义,如
local\\uat10215
,具体取决于您的代码问题是由
'\u'
引起的,它被检测为unicodeescape
。要解决这个问题,有两种选择:
所有后斜杠加倍(即
local\\uat10215
)使用原始字符串(即
r'local\uat10215'
)相关问题 更多 >
编程相关推荐