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

时间:2013-08-05 09:53:02

标签: python string literals

我无法相信将变量视为原始字符串很难!我搜索过并发现了类似的问题,但没有正确答案。

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

我只需要从变量中获取文字字符串,而不是别的。

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

我希望blah获得'domain\x08lah'

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

有什么想法吗?

修改

我误以为假设变量有一个斜杠。实际上,当从另一个操作获取变量时,反斜杠已经被转义。因此,在尝试创建测试场景时,我自己也成了问题。

1 个答案:

答案 0 :(得分:2)

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

您的字符串\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'