Python 3.x 用reprlib省略列表的中间部分

Python 3.x 用reprlib省略列表的中间部分,python-3.x,Python 3.x,我正在尝试使用列表格式化错误消息,并希望包括列表的开头和结尾,以获得更有用的错误消息。对于长列表,我想省略中间部分,以避免混乱reprlib似乎是实现这一点的理想选择,但我看不到用…指定要忽略列表的哪一部分的方法。例如,我想显示下面显示的mylist mylist = ["start", "blah", "blah", "blah", "end"] 作为 然而,使用repr,我看不到实现这一点的方法。我试过类似的东西 import reprlib r = reprlib.Repr() r.ma

我正在尝试使用列表格式化错误消息,并希望包括列表的开头和结尾,以获得更有用的错误消息。对于长列表,我想省略中间部分,以避免混乱
reprlib
似乎是实现这一点的理想选择,但我看不到用
指定要忽略列表的哪一部分的方法。例如,我想显示下面显示的
mylist

mylist = ["start", "blah", "blah", "blah", "end"]
作为

然而,使用repr,我看不到实现这一点的方法。我试过类似的东西

import reprlib
r = reprlib.Repr()
r.maxlist = 2
print(r.repr(mylist))

['start', 'blah', ...]
假设您知道这是一个列表(而不是其他的东西),那么就不用担心reprlib了。只需自己构建字符串:

def stringify_list(xs):
    if len(xs) < 3:
        return repr(xs)
    return '[{!r}, ..., {!r}]'.format(xs[0], xs[-1])

是的,很好的电话,我想如果我知道这是一个列表,我想reprlib可能是太过分了。我认为应该是

def stringify_list(xs):
    if len(xs) < 3:
        return repr(xs)
    return '[{!r}, ..., {!r}]'.format(xs[0], xs[-1])
import functools

stringify = functools.singledispatch(repr)

@stringify.register
def _(xs: list):
    # See previous function body