小编NaN*_*NaN的帖子

用于解压缩具有大括号抑制的列表的f-string语法

我一直在使用新的f-string格式检查我的一些字符串格式选项.我经常需要解压缩列表和其他未知长度的迭代.目前我使用以下...

>>> a = [1, 'a', 3, 'b']
>>> ("unpack a list: " + " {} "*len(a)).format(*a)
'unpack a list:  1  a  3  b '
Run Code Online (Sandbox Code Playgroud)

这虽然有点麻烦,但使用3.6之前的格式表示法.考虑到运行时字符串连接,新的f-string格式选项很有意思.这是我遇到问题的{}数量的复制.在我之前的例子中,我只是创建了必要的结构并在.format()部分中解压缩.

尝试这样做产生了一个有效的变体,但是,我不能将两个花括号放在一起,或者它不能解包...

(1)

>>> 'unpack a list'  f' {{*a}}'
'unpack a list {*a}'
Run Code Online (Sandbox Code Playgroud)

按下,我在内部{}对周围插入了一个空格.这是一个适度的改进,但是开始和结束{,}存在.

(2)

>>> 'unpack a list'  f' { {*a} }'
"unpack a list {1, 3, 'a', 'b'}"
Run Code Online (Sandbox Code Playgroud)

将变体拼接成一个封闭的f-string使外观和语法更好,因为评估显然是从左到右.然而,这仍然留下了封闭的花括号.

(3)

>>> f'unpack a list { {*a} }'
"unpack a list {1, 3, 'a', 'b'}"
Run Code Online (Sandbox Code Playgroud)

也许,我正在过度思考整个过程,并希望采用某种形式的自动拆包.这只是产生了列表表示,大括号被[]替换.
(4)

>>> f'unpack a list {a}'
"unpack a …
Run Code Online (Sandbox Code Playgroud)

python string-formatting python-3.x python-3.6 f-string

13
推荐指数
2
解决办法
7544
查看次数