簡體   English   中英

從格式化字符串內部切割字符串會產生'TypeError:字符串索引必須是整數'

[英]Slicing a string from inside a formatted string gives 'TypeError: string indices must be integers'

兩個命令不應該做同樣的事情嗎?

>>> "{0[0:5]}".format("lorem ipsum")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: string indices must be integers
>>> "{0}".format("lorem ipsum"[0:5])
'lorem'

命令

>>> "{0[0]}".format("lorem ipsum")
'l'

>>> "{0}".format("lorem ipsum"[0])
'l'

評價一樣。 (我知道我可以使用其他方法來做到這一點,我主要只是好奇為什么它不起作用)

str.format語法由庫處理,並且僅支持一些與常規Python語法不同的“表達式”語法。 例如,

"{0[foo]}".format(dict(foo=2))  # "2"

在字典鍵周圍沒有引號。 當然,這種簡單性存在局限性 ,例如無法在其中引用帶有]的鍵,或者在示例中解釋切片。

請注意,kendall提到的f字符串由編譯器處理並(適當地)使用(幾乎)不受限制的表達式語法 他們需要這種力量,因為他們缺乏將這些表達式放在參數列表中進行format的明顯選擇。

暫無
暫無

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

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