python原生字符串与普通字符串_Python将变量视为文字/原始字符串

I can't believe it's that difficult to treat a variable as a raw string! I have searched and found questions alike, but no proper answer.

I have a variable with domain name stored in. e.g. 'domain\user', I need to get the username only using re. The problem is Python gives me hex values for special character combinations, for example when I have \b in the string.

I just need to get the literal string from the variable, and nothing else.

author = list[0] // list[0] contains 'domain\blah'

author = re.sub('.*\\\\(.+)$', r'\1', author)

I'd expect blah, getting 'domain\x08lah'!

Saving the string as raw string at the start is not an option, because I'm getting the string from other regex operations.

Any ideas?

EDIT:

I was mistaken by assuming the variable had a single slash in. In fact, when getting the variable from another operation, the backclash had already been escaped. So I was making it a problem for myself when trying to create a test scenario.

解决方案

A raw string literal is only used to create string values, by avoiding (most) string escape codes that a regular string literal would use.

Your string started with the \x08 character; it never contained a backslash and a b character. If you defined the value contained in list[0] with a string literal, you forgot to escape the backslash. If the data came from somewhere else, you are looking at a raw hex byte value of 08:

>>> list_0 = 'domain\x08lah'

>>> list_0[6]

'\x08'

>>> len(list_0[6])

1

>>> ord(list_0[6])

8

If this byte was meant to be two characters instead, you could repair the data with string replacement:

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

'domain\\blah'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值