>>> a = '{"key1": "aaaaaaaaaaaaaaaaa", "key2": "bbbbbbbbbbbbbbbbbbbbbbbb"}'
>>> len(a)
64
>>> textwrap.wrap(a, 32, drop_whitespace=False)
['{"key1": "aaaaaaaaaaaaaaaaa", ', '"key2": ', '"bbbbbbbbbbbbbbbbbbbbbbb"}']
我期待中
['{"key1": "aaaaaaaaaaaaaaaaa", "k', 'ey2": "bbbbbbbbbbbbbbbbbbbbbbb"}']
我想念什么?
根据official documentation,您的期望是错误的:
将单个段落包裹在文本(字符串)中,因此每一行最多为宽度字符长。返回输出行列表,不带最终换行符。[...]最好将文本包裹在空白处,并紧接在带连字符的单词中的连字符之后;除非
TextWrapper.break_long_words
设置为false,否则只有在必要时才会打断长单词。
您的预期输出将在32个字符后立即断开,而实际输出将分为30、8和27个字符长的段-仅在原始字符串中的空白字符上断开。
第二个段比其他段短得多,因为第一个字符串加上此下一个非空白行"key2":
的长度超过32个字符,而此简短段加上next短语的长度更长[[also超过32个字符。仅当绝对不可能在空格或连字符处中断时,才会在非空白运行中间中断。