[英]what is %a in python's string formatting
我有一个关于字符串格式的基本问题。 我使用 python 2.7 和 3+ 进行编码
我知道 %s 用于字符或字符串
name = "John"
print("Hello, %s!" % name)
你好约翰!
现在,如果我使用整数
name = 123
print("Hello, %s!" % name)
输出是你好,123!
当我确实想将其转换为字节时,就像这样
name = 123
print(b"Hello, %s!" % name)
在 python 2.7 中,它向我抛出一个错误,说%b requires bytes, or an object that implements __bytes__, not 'int'
name = 123
print(b"Hello, %a!" % name)
%a 是否明确用于获取字节类型的东西.. 我在网络上找不到关于 %a 的太多信息.. 并且有人广泛使用的旧代码使用了它,我正在调试它.. 所以需要一些帮助理解上述内容(在转换为字节时使用字符串或数字)
%a 将在插值上给出相当于 repr(some_obj).encode('ascii', 'backslashreplace') 的值。 用例包括开发新协议并将地标写入流中; 调试进入现有协议的数据,看看问题是协议本身还是坏数据; 序列化格式的回退; 或定义字节不合适但需要可读/信息性表示的任何情况[6]。
%r 作为 %a 的同义词包含在内,其唯一目的是使 2/3 代码库更易于维护。 Python 3 仅代码使用 %a
在打印语句中,您可以用 str(name).encode() 替换 name 以消除您遇到的错误。
%b
用于格式化打印语句中的字节值。
s = "hello"
s_bytes = str.encode(s)
type(s_bytes)
“字节”类
s_bytes
再见
print(b"The text is %b" % s_bytes)
b'文本是你好'
print(b"The text is %b" % s)
回溯(最近一次调用最后一次):文件“”,第 1 行,类型错误:%b 需要一个类似字节的对象,或实现bytes的对象,而不是 'str'
最重要的是,当您使用%b
进行格式化时,您必须传递一个字节对象。
'%a' 字符串格式运算符。 '%a' 使用 repr() 将任何 python 对象转换为字符串,然后对所有非 ASCII 字符进行十六进制转义。 '%a' 格式运算符生成与 Python 2 中的 '%r' 相同的字符串。此外,将 '!a' 转换标志添加到 string.format() 方法并将 '%A' 运算符添加到
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.