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