python中的%a是什么';s字符串格式
我有一个关于字符串格式的基本问题。我使用Python2.7和3+进行编码 我知道%s用于字符或字符串python中的%a是什么';s字符串格式,python,string-formatting,Python,String Formatting,我有一个关于字符串格式的基本问题。我使用Python2.7和3+进行编码 我知道%s用于字符或字符串 name = "John" print("Hello, %s!" % name) 你好,约翰 现在,如果我使用一个整数 name = 123 print("Hello, %s!" % name) 输出是Hello,123 当我真的想把它转换成字节时,就像这样 name = 123 print(b"Hello, %s!" % name) 在Python2.7中 它向我抛出了一个错误,说%b
name = "John"
print("Hello, %s!" % name)
你好,约翰
现在,如果我使用一个整数
name = 123
print("Hello, %s!" % name)
输出是Hello,123
当我真的想把它转换成字节时,就像这样
name = 123
print(b"Hello, %s!" % name)
在Python2.7中
它向我抛出了一个错误,说%b需要字节,或者是一个实现了字节而不是int的对象。
name = 123
print(b"Hello, %a!" % name)
Is%a显式用于获取字节类型的内容。。我在web上找不到有关%a的详细信息。。有人编写的旧代码广泛使用了它,我正在调试。。因此,在理解上述内容时需要一些帮助(在转换为字节时使用字符串或数字)
%a将给出repr(some_obj.encode('ascii')的等价物,
内插值上的“反斜杠替换”)。用例包括
开发新的协议,并在流中写入里程碑;
调试进入现有协议的数据,以查看问题是否存在
是协议本身还是坏数据;序列化的一种退路
格式;或任何无法定义字节的情况
需要适当但可读/信息丰富的表示[6]
%r作为%a的同义词包含,其唯一目的是使其成为2/3
代码库更易于维护。仅Python 3代码使用%a
在print语句中,可以用str(name).encode()替换name以消除出现的错误。
%b
用于格式化print语句中的字节值
s = "hello"
s_bytes = str.encode(s)
type(s_bytes)
类“字节”
s_bytes
b‘你好’
print(b"The text is %b" % s_bytes)
“文本是hello”
print(b"The text is %b" % s)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
TypeError:%b需要类似字节的对象,或者需要实现字节的对象,而不是“str”
底线是,当您使用%b
格式化时,必须传递一个字节对象。请参阅。区别在于%s
使用str()
执行转换,而%a
使用ascii()
。