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
我在将字典附加到列表时遇到问题
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