如何在python中换行?

时间:2019-04-30 12:43:33

标签: python

我刚刚学会写python语言,我要如何进行自动换行输出?

我已经完成了谷歌搜索,结果不存在,或者不知道关键字

代码是这样的:

import binascii

filename = 'file.pdf'
with open(filename, 'rb') as f:
    content = f.read()
print(binascii.hexlify(content))

结果将是这样,仅一行: 255044462d312e340a25c3a4c3bcc3b6c39f0a322

但是我想这样,例如用10个字符包装: 0x25, 0x50, 0x44, ...

有人可以帮助我吗?谢谢!

3 个答案:

答案 0 :(得分:1)

您可以使用textwrap模块来包装x个字符。

这是使用textwrap的代码。

import binascii
import textwrap

filename = 'file.pdf'
with open(filename, 'rb') as f:
    content = f.read()
temp = binascii.hexlify(content)
temp_hex = []
# convert bytes to hexadecimal value
for t in temp:
    temp_hex.append(hex(t))
# join the hexadecimal value using "," and wrap with maximum 10 characters each rows
print(textwrap.fill(",".join(temp_hex), 10))

答案 1 :(得分:0)

写一个生成器,将字符串分成相等大小的块,然后用它分成20个块,再分成长度为2的较小块:

def split_string(s, chunk_length):
    for i in range(0, len(s), chunk_length):
        yield s[i:i+chunk_length]

hex = binascii.hexlify(content)
for line in split_string(hex, 20):  # divide into chunks of length 20
    print(*split_string(line, 2), sep=", ")    # then into chunks of length 2

答案 2 :(得分:0)

首先编写一个custom_hexlify函数,该函数通过使用hex输出所需的格式。

text = b'foo bar'

def custom_hexlify(data):
    return ', '.join([hex(c) for c in data])

print(custom_hexlify(text)) # 0x66, 0x6f, 0x6f, 0x20, 0x62, 0x61, 0x72

要包装文字,您可以使用textwrap.wrap

def print_wrapped_line(*args, **kwargs):
    for line in textwrap.wrap(*args, **kwargs):
        print(line)

print_wrapped_line(custom_hexlify(text), 20)

输出

0x66, 0x6f, 0x6f,
0x20, 0x62, 0x61,
0x72