[英]Python format a string with a double inside quote with a dict
当字符串中有双引号时,为什么使用字典格式失败?
'%(x)"%(y)' % {'x': 1, 'y':2}
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: unsupported format character '"' (0x22) at index 4
它适用于:
'%s"%s' % (1,2)
您忘记了转换类型代码:
>>> '%(x)s"%(y)s' % {'x': 1, 'y':2}
'1"2'
注意s
字符串。 语法为%(key)conversiontype
。 在没有字符表示转换类型的情况下,解析器将选择下一个字符,即字符串中的"
。
从字符串格式化操作文档中 :
转换说明符包含两个或多个字符,并具有以下组件,这些组件必须按此顺序出现:
'%'
字符,标志着说明符的开始。- 映射键(可选),由带括号的字符序列组成(例如
(somename)
)。- 转换标志(可选),会影响某些转换类型的结果。
- 最小字段宽度(可选)。 如果指定为
'*'
(星号),则会从元组的下一个元素读取值中的实际宽度,并且要转换的对象位于最小字段宽度和可选精度之后。- 精度(可选),以
'.'
(点)后跟精度。 如果指定为'*'
(星号),则从值的元组的下一个元素读取实际宽度,并且要转换的值位于精度之后。- 长度修改器(可选)。
- 转换类型。
您提供了第1项和第2项(可选),但省略了第7项。
就像使用%s
,您也应该使用%(x)s
。 正如%"
是错误的, %(x)"
是错误的。 您只需要添加一点s
:
'%(x)s"%(y)s' % {'x': 1, 'y':2}
该字母是必需的,其原因与普通格式一样。 您可以像以前一样使用d
, 03d
, f
等。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.