python3 textwrap以json格式意外输出吗?

问题描述 投票:0回答:1
>>> a = '{"key1": "aaaaaaaaaaaaaaaaa", "key2": "bbbbbbbbbbbbbbbbbbbbbbbb"}'
>>> len(a)
64
>>> textwrap.wrap(a, 32, drop_whitespace=False)
['{"key1": "aaaaaaaaaaaaaaaaa", ', '"key2": ', '"bbbbbbbbbbbbbbbbbbbbbbb"}']

我期待中

['{"key1": "aaaaaaaaaaaaaaaaa", "k', 'ey2": "bbbbbbbbbbbbbbbbbbbbbbb"}']

我想念什么?

json python-3.x word-wrap
1个回答
0
投票

根据official documentation,您的期望是错误的:

将单个段落包裹在文本(字符串)中,因此每一行最多为宽度字符长。返回输出行列表,不带最终换行符。[...]最好将文本包裹在空白处,并紧接在带连字符的单词中的连字符之后;除非TextWrapper.break_long_words设置为false,否则只有在必要时才会打断长单词。

您的预期输出将在32个字符后立即断开,而实际输出将分为30、8和27个字符长的段-仅在原始字符串中的空白字符上断开。

第二个段比其他段短得多,因为第一个字符串加上此下一个非空白行"key2":的长度超过32个字符,而此简短段加上next短语的长度更长[[also超过32个字符。仅当绝对不可能在空格或连字符处中断时,才会在非空白运行中间中断。

© www.soinside.com 2019 - 2024. All rights reserved.