无法在字典的字符串值内添加单个反斜杠

时间:2019-06-21 06:42:51

标签: python python-3.x

考虑是否要将值的输出设置为“ 1 \ 2”:

>>value='1'+'\\'+'2'
>>print(value)
1\2

这按预期工作。但是,如果将此值添加到字典中,则会得到双反斜杠。有没有一种方法可以保留字符串而不将其修改为双反斜杠?

>>print({'key': value})
{'key': '1\\2'}

1 个答案:

答案 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