python dict append to list error(value with \)

python dict append to list error(value with \)

我在将字典附加到列表时遇到问题

    data = []
    path = "abc\cde"
    data.append({"image": path})
    print(data)

当我将路径附加到图像时,数据的输出是 [{'image':'abc\def'}]。 它包含两个 \ 而不是一个。

额外的反斜杠是 Python 转义单个反斜杠。 path 字符串的实际值未更改,正如您在打印 data[0]['image'] 的值时看到的那样。

data = []
path = 'abc\cde'
data.append({"image": path})

# output: abc\cde
print(data[0]['image'])

\ 是转义字符。它允许您使用特殊符号,例如新行 \n 或制表符 \t。如果您希望字符串包含文字 \,请确保在它之前放置另一个 \

在你的情况下,Python 理解你的意思是 "abc\cde",即使你没有逃脱 \。如果您有 abc\nde,结果将是 abc<line_break>de

>>> a = "abc\cde"
>>> a
'abc\cde'
>>> list(a)
['a', 'b', 'c', '\', 'c', 'd', 'e']

如您所见,尽管它看起来像双反斜杠,但它只是一个 \ 个字符。

更多信息:https://www.w3schools.com/python/gloss_python_escape_characters.asp

键入包含斜杠的文本时,请使用 raw strings 以避免将某些序列解释为特殊字符,例如python 字符串中的 "\n" 是表示换行的单个字符。

>>> data = []
>>> data.append({"image": r'abc\cde'})
>>> data
[{'image': 'abc\cde'}]
>>>
>>> data.append({"image": r'abc\nasdf'})
>>> data
[{'image': 'abc\cde'}, {'image': 'abc\nasdf'}]

当您看到两个斜杠时,是因为 python repr-安全地发送带有斜杠的字符串,这不是实际内容。

>>> r'abc\cde'
'abc\cde'
>>> r'abc\nasdf'
'abc\nasdf'

这样,带有特殊字符的文本可以以紧凑的方式可视化。如果您想查看这些字符串的实际内容,print them:

>>> print(r'abc\cde')
abc\cde
>>> print(r'abc\nasdf')
abc\nasdf
>>> print('abc\cde')
abc\cde
>>> print('abc\nasdf')
abc
asdf

使用原始字符串仅适用于您手动键入的字符串,这是一种解释python如何解释某些字符的方法。如果字符串来自例如文件或流,其字符的“含义”已经定义。
关于如何将原始字符串(同样,原始字符串是普通字符串)与变量连接的问题,没有区别。

>>> with_slash = r'abc\cde'
>>> wout_slash = 'asdf'
>>> with_slash + wout_slash
'abc\cdeasdf'
>>> print(with_slash + wout_slash)
abc\cdeasdf