Python3.6的一个非常酷的新特性是格式化字符串文本(https://docs.python.org/3.6/whatsnew/3.6.html#whatsnew36-pep498)的实现。在
不幸的是,它的行为不像众所周知的format()函数:
>> a="abcd"
>> print(f"{a[:2]}")
>> 'ab'
如您所见,切片是可能的(实际上所有的python函数都在字符串上)。
但是format()
不能用于切片:
有一种新的字符串功能吗??在
>> string_object = "{a[:2]}" # may also be comming from a file
>> # some way to get the result 'ab' with 'string_object'
str.format
语法现在和将来都不支持新的f-string所支持的全部表达式。您必须在字符串外部手动计算切片表达式,并将其提供给format函数:还应该注意,在f-strings允许的语法和
str.format
之间存在{a1},因此前者严格来说不是后者的超集。在不,
str.format
尝试在应用索引之前先将其强制转换为str
,这就是为什么会出现这样的错误;它试图用str
索引为字符串建立索引:它真的不适用于这样的情况;}。在
"{a[::]}".format(a=a)
可能也会被评估为{这就是
f-strings
产生的原因之一,为了支持任何Python表达式的格式化愿望。在相关问题 更多 >
编程相关推荐