python 字符串如何不转义

给python字符串赋值时如word='\b(.*?)'我这里\b不是转义符,我也知道可以用replace('\b','\\b')但是我有很多这样的字符串,可能会有\b,... 给python字符串赋值时 如word='\b(.*?)' 我这里\b不是转义符,我也知道可以用replace('\b','\\b')
但是我有很多这样的字符串,可能会有\b,\c,\S等,如何统一去替换掉啊
我知道r'\bdfasa' 可以赋值自然字符串,但是如果我有一个变量a = '\bfdadfs‘
如何把a转换为自然字符串赋给b呢

求大神指点 谢过~~~
展开
 我来答
tim_spac
推荐于2016-10-02 · TA获得超过3628个赞
知道大有可为答主
回答量:1804
采纳率:100%
帮助的人:2026万
展开全部
#!/usr/bin/python
# encoding: utf-8


charconvertmap = {
    'a': '\a',
    'b': '\b',
    'f': '\f',
    'n': '\n',
    'r': '\r',
}

def strconvertor(s):
    flag = False
    result = []
    for c in s:
        if not flag and c=="\\":
            flag = True
        elif flag:
            result.append(charconvertmap.get(c, c))
            flag = False
        else:
            result.append(c)
    return ''.join(result)

s = strconvertor(r"\btester")
print "%r"%s

#~ >python -u "baidu.py"
#~ '\x08tester'
#~ >Exit code: 0    Time: 0.064
xiangnanscu
2013-11-27 · TA获得超过852个赞
知道小有建树答主
回答量:318
采纳率:0%
帮助的人:333万
展开全部

晓得你啥子意思了,放到文本文件里的字面量,读到内存中时,就已经是原始字符串了,无需r前缀.

比如某配置文件里的

\b(.*?)

当你读取这个配置文件时,上面的数据对应到内存中就相当于:

'\\b(.*?)'

根本不需要再转换自然字符串

追问
我发现问题原因了  是我读配置文件写入数据库时在数据库里被转义了  谢啦
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Coo_boi
2013-11-27 · TA获得超过1333个赞
知道大有可为答主
回答量:2209
采纳率:50%
帮助的人:251万
展开全部
>>> print '\b(.*?)'
(.*?)
>>> print r'\b(.*?)'
\b(.*?)
>>>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yzviolet
2013-11-27 · TA获得超过2578个赞
知道大有可为答主
回答量:1196
采纳率:0%
帮助的人:1002万
展开全部
多加一个\在\前。例如 word = '\\b(.*?)'
追问
我知道这样可以  但是这些字符串是我从配置文件中读出来的,不是直接赋值的,所以必须用函数对字符串进行操作了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式