考虑我是否希望值的输出为“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
关于python - 无法在字典中的字符串值中添加单个反斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56698171/