簡體   English   中英

Python格式化帶雙引號和dict的字符串

[英]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 在沒有字符表示轉換類型的情況下,解析器將選擇下一個字符,即字符串中的"

字符串格式化操作文檔中

轉換說明符包含兩個或多個字符,並具有以下組件,這些組件必須按此順序出現:

  1. '%'字符,標志着說明符的開始。
  2. 映射鍵(可選),由帶括號的字符序列組成(例如(somename) )。
  3. 轉換標志(可選),會影響某些轉換類型的結果。
  4. 最小字段寬度(可選)。 如果指定為'*' (星號),則會從元組的下一個元素讀取值中的實際寬度,並且要轉換的對象位於最小字段寬度和可選精度之后。
  5. 精度(可選),以'.' (點)后跟精度。 如果指定為'*' (星號),則從值的元組的下一個元素讀取實際寬度,並且要轉換的值位於精度之后。
  6. 長度修改器(可選)。
  7. 轉換類型。

您提供了第1項和第2項(可選),但省略了第7項。

就像使用%s ,您也應該使用%(x)s 正如%"是錯誤的, %(x)"是錯誤的。 您只需要添加一點s

'%(x)s"%(y)s' % {'x': 1, 'y':2}

該字母是必需的,其原因與普通格式一樣。 您可以像以前一樣使用d03df等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM