Python .format 切片长字符串并添加省略号

6 投票
3 回答
6180 浏览
提问于 2025-04-17 19:11

在Python中,我想把长字符串“Foo Bar”变成“Foo...”,同时不改变短字符串“Foo”。

"{0:.<-10s}".format("Foo Bar") 

这只是让字符串后面加上点点。

3 个回答

-2

你可以设置需要多少个点,以及在多少个字符之后显示这些点。我这里是设置在3个字符后显示10个点。

text = "Foo Bar"
dots = "." * 10
output = text[0:3] + dots
print output

输出结果是:

Foo..........
0

这个被接受的答案没有考虑到,去掉原字符串最后三个字符后,可能会导致字符串的结尾是一个空格。

用这个输入:

"{0:<10s}".format(truncate("Foo Ba rBaz", 10))

输出结果是:

'Foo Ba ...'

在三个点之前有一个空格。

这是一个修复方法:

def truncate(string, width):
    string = string.strip()
    if len(string) > width:
        string = string[:width-3].strip() + '...'
    return string

现在 "{0:<10s}".format(truncate("Foo Ba rBaz", 10)) 的输出是 'Foo Ba... '

8

你需要使用一个单独的函数来实现这个功能;Python的格式化小语言不支持截断:

def truncate(string, width):
    if len(string) > width:
        string = string[:width-3] + '...'
    return string

"{0:<10s}".format(truncate("Foo Bar Baz", 10))

这段代码的输出是:

>>> "{0:<10s}".format(truncate("Foo", 10))
'Foo       '
>>> "{0:<10s}".format(truncate("Foo Bar Baz", 10))
'Foo Bar...'

撰写回答