考虑我是否希望值的输出为“1\2”:
>>value='1'+'\\'+'2'
>>print(value)
1\2
这按预期工作。但是,如果我将这个值添加到字典中,我会得到双反斜杠。有没有一种方法可以保留字符串而不修改为双反斜杠?
>>print({'key': value})
{'key': '1\\2'}
请您参考如下方法:
当您打印字典时,它会打印 repr的值(value)
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
