Enr*_*rba 25 python string-interpolation python-3.x f-string
我正在寻找格式化的字节字符串文字.具体来说,相当于
name = "Hello"
bytes(f"Some format string {name}")
Run Code Online (Sandbox Code Playgroud)
可能是类似的东西fb"Some format string {name}".
这样的事情存在吗?
jwo*_*der 23
出于我们不支持的相同原因
bytes.format(),您可能无法'f'与'b'字符串文字结合使用.主要问题是对象的__format__()方法可能返回与字节字符串不兼容的Unicode数据.二进制f字符串首先需要一个解决方案
bytes.format().这个想法在过去曾被提出,最近一次是在PEP 461中提出的.对这种特征的讨论通常也表明了这一点
添加一个方法,如
__bformat__()一个对象可以控制它如何转换为字节,或具有
bytes.format()不那么通用或可扩展为str.format().如果需要这样的功能,这两个仍然是未来的选择.
小智 9
你的建议实际上非常接近;encoding如果您在调用中添加kwarg bytes(),那么您将获得所需的行为:
>>> name = "Hello"
>>> bytes(f"Some format string {name}", encoding="utf-8")
b'Some format string Hello'
Run Code Online (Sandbox Code Playgroud)
警告:这对我来说适用于 3.8,但请注意文档中字节对象标题的底部似乎表明这应该适用于所有 3.x 中的任何字符串格式化方法(用于str.format()<3.6 版本,因为那时添加了 f 字符串,但 OP 特别询问了 3.6+)。
在 3.6+ 中,您可以执行以下操作:
>>> a = 123
>>> f'{a}'.encode()
b'123'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4770 次 |
| 最近记录: |