如何在字符串中表示包含(")的内容?已尝试多种方法未解决
解决Python中构造包含
\和"的字符串问题 我明白你现在的困惑——试了好几种写法,都没得到想要的'xpto\"xpto'效果,其实核心是你混淆了字符串的实际内容和Python对字符串的repr表示,我来给你理清楚:
先搞懂两个关键概念
- 当你在Python交互式环境里直接输入变量名,得到的是字符串的
repr()结果:这是Python用来“展示”字符串的方式,会把特殊字符用转义符表示(比如用\\表示实际的\),方便你直接复制作为代码里的字面量。 - 当你用
print()输出字符串时,得到的才是字符串的实际内容,也就是你最终想要的显示效果。
你的目标解决方案
如果你想要的是实际内容为xpto\"xpto(也就是print()后输出这个结果),那么有两种简单可靠的写法:
方法1:使用原始字符串(Raw String)
原始字符串会忽略转义符的作用,里面的\会被当作普通字符处理,直接写你想要的内容即可:
data = r'xpto\"xpto'
- 验证:
>>> data = r'xpto\"xpto' >>> data # 这是repr结果,显示为转义后的形式 'xpto\\"xpto' >>> print(data) # 这是实际内容,正是你要的 xpto\"xpto
方法2:使用普通字符串,手动转义反斜杠
在普通字符串里,要表示一个实际的\,必须写两个\\(因为单个\是转义符);而"用单引号包裹时不需要转义,所以要构造xpto\"xpto的实际内容,需要写:
data = 'xpto\\\\\"xpto'
- 验证:
>>> data = 'xpto\\\\\"xpto' >>> data 'xpto\\\\\"xpto' >>> print(data) xpto\"xpto
为什么你之前的尝试看起来不对?
你试的data= r'xpto\"xpto'其实已经是正确的写法了!只是你看到的'xpto\\"xpto'是Python的repr输出,不是实际内容,用print()就能得到你想要的结果啦。
内容的提问来源于stack exchange,提问作者rnnhm




