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呢
求大神指点 谢过~~~ 展开
但是我有很多这样的字符串,可能会有\b,\c,\S等,如何统一去替换掉啊
我知道r'\bdfasa' 可以赋值自然字符串,但是如果我有一个变量a = '\bfdadfs‘
如何把a转换为自然字符串赋给b呢
求大神指点 谢过~~~ 展开
4个回答
展开全部
#!/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
展开全部
晓得你啥子意思了,放到文本文件里的字面量,读到内存中时,就已经是原始字符串了,无需r前缀.
比如某配置文件里的
\b(.*?)
当你读取这个配置文件时,上面的数据对应到内存中就相当于:
'\\b(.*?)'
根本不需要再转换自然字符串
追问
我发现问题原因了 是我读配置文件写入数据库时在数据库里被转义了 谢啦
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
>>> print '\b(.*?)'
(.*?)
>>> print r'\b(.*?)'
\b(.*?)
>>>
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
多加一个\在\前。例如 word = '\\b(.*?)'
追问
我知道这样可以 但是这些字符串是我从配置文件中读出来的,不是直接赋值的,所以必须用函数对字符串进行操作了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询