Python将变量视为文字/原始字符串

Python将变量视为文字/原始字符串,python,string,literals,Python,String,Literals,我不敢相信把变量当作原始字符串来处理有那么难!我搜索并找到了相似的问题,但没有正确的答案 我有一个域名存储在中的变量。e、 g.“域\用户”,我只需要使用re获取用户名。问题是Python为特殊字符组合提供十六进制值,例如当字符串中有\b时 我只需要从变量中获取文本字符串,其他什么都不需要 author = list[0] // list[0] contains 'domain\blah' author = re.sub('.*\\\\(.+)$', r'\1', author) 我希望废话,

我不敢相信把变量当作原始字符串来处理有那么难!我搜索并找到了相似的问题,但没有正确的答案

我有一个域名存储在中的变量。e、 g.“域\用户”,我只需要使用
re
获取用户名。问题是Python为特殊字符组合提供十六进制值,例如当字符串中有
\b

我只需要从变量中获取文本字符串,其他什么都不需要

author = list[0] // list[0] contains 'domain\blah'
author = re.sub('.*\\\\(.+)$', r'\1', author)
我希望
废话
,得到
'domain\x08lah'

在开始时将字符串保存为原始字符串不是一个选项,因为我从其他正则表达式操作获取字符串

有什么想法吗

编辑:


我错误地认为变量中只有一个斜杠。事实上,当从另一个操作获取变量时,backclash已经被转义。因此,我在尝试创建测试场景时遇到了一个问题。

原始字符串文字仅用于创建字符串值,避免了常规字符串文字使用的(大多数)字符串转义码

字符串以
\x08
字符开头;它从不包含反斜杠和
b
字符。如果使用字符串文字定义了
列表[0]
中包含的值,则忘记了转义反斜杠。如果数据来自其他地方,您将看到原始十六进制字节值08:

>>> list_0 = 'domain\x08lah'
>>> list_0[6]
'\x08'
>>> len(list_0[6])
1
>>> ord(list_0[6])
8
如果将此字节改为两个字符,则可以使用字符串替换来修复数据:

>>> list_0.replace('\b', '\\b')
'domain\\blah'

列表[0]
最初是如何设置的?您在某个地方定义了一个常规字符串,但没有在那里转义反斜杠。谢谢。我在我的问题中添加了一个编辑。你的回答确实帮助我理解了一些事情,但绝对正确,那不是答案。这不是你的错,这是我的错,这是我的问题。但我已经投了赞成票;)