Python中用+运算符拼接字符串时转义字符丢失,求解决方案
问题原因与解决方法
问题原因
你代码里的"\b"并不是字面意义的\b字符,而是Python中的退格控制字符。当字符串被解析时,\b会执行删除前一个字符的操作:
- 拼接时,
"r'\b"里的\b会删掉前面的单引号,变成r; - 后面的
"\b'"里的\b会删掉var的最后一个字符8,再加上单引号后,最终就得到了r'28'。
解决方法
要输出字面的r'\b{var}\b',可以用以下几种方式:
1. 转义反斜杠
把字符串中的\写成\\,让Python将其解析为字面的反斜杠:
var = '28' express = "r'\\b" + var + "\\b'" print(express)
2. 使用原始字符串
原始字符串(前缀r)中的反斜杠不会被解析为转义字符,直接作为字面量处理:
var = '28' express = r"r'\b" + var + r"\b'" print(express)
3. 原始f-string(Python 3.6+)
用fr前缀的f-string,既能嵌入变量,又保留原始字符串的特性:
var = '28' express = fr"r'\b{var}\b'" print(express)
处理用户输入的情况
如果var是用户输入,直接用上面的方法即可:
var = input("请输入内容:") express = fr"r'\b{var}\b'" print(express)
内容的提问来源于stack exchange,提问作者Anshul Gupta
相关产品推荐
相关产品推荐

