考虑是否要将值的输出设置为“ 1 \ 2”:
>>value='1'+'\\'+'2'
>>print(value)
1\2
这按预期工作。但是,如果将此值添加到字典中,则会得到双反斜杠。有没有一种方法可以保留字符串而不将其修改为双反斜杠?
>>print({'key': value})
{'key': '1\\2'}
答案 0 :(得分:5)
打印字典时,它将打印值的repr
strg = "\\"
print(str(strg)) # \
print(repr(strg)) # '\\'
所以一切都很好。除了您编写自己的字符串类并覆盖__repr__
(感觉有点过头)之外,我现在不知道解决该问题的方法。
所以您真的想要实现这一目标。那就太杀了! :)
class MyStr(str):
def __new__(cls, *args, **kw):
return str.__new__(cls, *args, **kw)
def __repr__(self):
return str(self)
strg = MyStr("\\")
print(str(strg)) # \
print(repr(strg)) # \
这可能会破坏事情(尤其是涉及eval
的情况。)
或:
from collections import UserString
class MyStr(UserString):
def __index__(self, strg):
super().__init__(strg)
def __repr__(self):
return self.data