Python .format 切片长字符串并添加省略号
在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...'