2

我不敢相信将变量视为原始字符串有那么难!我已经搜索并找到了类似的问题,但没有正确的答案。

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

我只需要从变量中获取文字字符串,仅此而已。

author = list[0] // list[0] contains 'domain\blah'
author = re.sub('.*\\\\(.+)$', r'\1', author)

我期待blah,得到'domain\x08lah'

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

有任何想法吗?

编辑:

我错误地假设变量中有一个斜杠。事实上,当从另一个操作中获取变量时,反冲已经被转义了。因此,在尝试创建测试场景时,我把它变成了自己的问题。

4

1 回答 1

3

原始字符串文字仅用于通过避免(大多数)常规字符串文字将使用的字符串转义码来创建字符串值。

您的字符串以字符开头\x08;它从不包含反斜杠和b字符。如果您list[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'
于 2013-08-05T09:59:13.997 回答