【问题标题】:python3 textwrap unexpected output on json format?python3文本以json格式包装意外输出?
【发布时间】:2020-02-13 12:24:24
【问题描述】:
>>> 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】:

你的期望是错误的,根据official documentation

将单个段落包装在文本(字符串)中,因此每行最多为宽度字符长。返回输出行列表,不带最终换行符。
[...]
文本最好用空格括起来,并紧跟在连字符的连字符之后;只有这样,长词才会在必要时被打断,除非 TextWrapper.break_long_words 设置为 false。

您的预期输出在 32 个字符后被分割,而实际输出被分割成 30、8 和 27 个字符长的段 - 仅在原始字符串中的空白字符处被分割。

第二段比其他段短得多,因为第一个字符串加上这个下一个非空白运行 "key2": 超过 32 个字符,这个短运行加上 next 短语是 超过 32 个字符。只有当绝对不可能在空格或连字符上中断时,才会在非空白运行中间发生中断。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-26
    • 1970-01-01
    相关资源
    最近更新 更多