我一直在使用新的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)