[英]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.