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

标签 python python-3.x

考虑我是否希望值的输出为“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/

相关文章:

python - 无序列表作为字典键

python - Django:无法在指定中间模型的 ManyToManyField 上设置值

java - 在 Python 和 Java 中对原始字节进行哈希处理会产生不同的结果

python - 在 scikit learn 中自定义损失函数

python - setColumnStretch 和 setRowStretch 如何工作

python - 使用集合在字符串内搜索

python - decimal.InvalidOperation,除法对于非常大的数字来说是不可能的

python - 如何打印从 'startswith' 到 'endswith' 的字符串部分

Python QueryFrame 返回 None,但 C++ 绑定(bind)有效

python - 有没有不同的方法来检查 python 中的双端队列是否为空