Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中的%a是什么';s字符串格式_Python_String Formatting - Fatal编程技术网

python中的%a是什么';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

我有一个关于字符串格式的基本问题。我使用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需要字节,或者是一个实现了字节而不是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()