如何修剪 f 字符串中列表元素之间的空格?

问题描述 投票:0回答:1

我有一个正在使用 f 字符串格式化和打印的字符串,我需要消除列表元素之间的空格(以及第一个以“:”结尾的项目之后)。这是我的代码:

if len(probably) > 0 and len(might) > 0:  
       print(f'{name}:',f'Might({might})', f'Probably({probably})')
    elif len(probably) == 0 and len(might) > 0:  
       print(f'{name}:',f'Might({might})')
    elif len(probably) > 0 and len(might) == 0:
       print(f'{name}:',f'Probably({probably})')
    elif len(probably) == 0 and len(might) == 0:
       print(f'{name}:')

这是目前的样子:

1: Might(4, 6, 7) Probably(11)
2: Might(5, 8, 10) Probably(9)
3: Might(4, 5, 6, 7, 8, 12)
4: Might(1, 3, 6, 11, 12)
5: Might(2, 3, 8, 10) Probably(9)
6: Might(1, 3, 4, 7, 11)
7: Might(1, 3, 6)
8: Might(2, 3, 5, 9, 10)
9: Might(8, 10) Probably(2, 5)
10: Might(2, 5, 8, 9)
11: Might(4, 6) Probably(1)
12: Might(3, 4)
13:

这就是我需要的样子

    1:Might(4,6,7) Probably(11)
    2:Might(5,8,10) Probably(9)
    3:Might(4,5,6,7,8,12)
    4:Might(1,3,6,11,12)
    5:Might(2,3,8,10) Probably(9)
    6:Might(1,3,4,7,11)
    7:Might(1,3,6)
    8:Might(2,3,5,9,10)
    9:Might(8,10) Probably(2,5)
    10:Might(2,5,8,9)
    11:Might(4,6) Probably(1)
    12:Might(3,4)
    13:
python removing-whitespace f-string
1个回答
1
投票

f 字符串归根结底仍然只是一个字符串:

>>> x = "hello"
>>> print(f"    {x}    ".strip())
hello

但是,不太清楚您期望的输出是什么样子,因为每行上的数字和

Might
之间的间距似乎不一致:

3: Might(4,5,6,7,8,12)
4:Might(1,3,6,11,12)

为什么其中一个有空格,而另一个却没有?要补充的是:您可以利用对象的真实性并简化您的 if 语句:

if probably and might:  
    print(f'{name}:', f'Might({might})', f'Probably({probably})')
elif not probably and might:  
    print(f'{name}:', f'Might({might})')
elif probably and not might:
    print(f'{name}:', f'Probably({probably})')
elif not probably and not might:
    print(f'{name}:')

如果你想追求真实,你可以完全摆脱 if 语句:

print(f"{name}:", f"Might({might})"*bool(might), f"Probably({probably})"*bool(probably))

编辑

由于您已通过评论添加了一些上下文,因此您可以执行以下操作:

# Get rid of spaces between numbers
might_str = ",".join(map(str, might))
prob_str = ",".join(map(str, probably))

if probably and might:  
    print(f'    {name}:Might({might_str}) Probably({probably_str})')
elif not probably and might:  
    print(f'    {name}:Might({might_str})')
elif probably and not might:
    print(f'    {name}:Probably({probably_str})')
elif not probably and not might:
    print(f'    {name}:')

一些输出,包括“预期输出”中的前导空格:

    1:Might(1,2,3,4,5) Probably(5,6,2,3,1)
    2:Probably(5,6,2,3,1)
    3:Might(1,2,3,4,5)
    4:
© www.soinside.com 2019 - 2024. All rights reserved.