Py学习  »  Python

用于格式化字符串的Python解包列表[重复]

Harry Lees • 4 年前 • 689 次点击  

我有一个基于用户输入动态创建的字符串。我正在使用Python中的.format函数将列表添加到字符串中,但是我想在打印时删除引号和括号。

我试过:

return (('{} is {}x effective against {}').format(opponentType, overallHitMultiplier, [str(x) for x in playerTypes]))

return return (('{} is {}x effective against {}').format(opponentType, overallHitMultiplier, playerTypes))

两者都返回如下所示的字符串:

fighting is 2x effective against ['normal', 'ghost']

但我希望它返回如下内容:

fighting is 2x effective against normal, ghost

列表的长度是可变的,所以我不能一个接一个地插入列表元素。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/52492
 
689 次点击  
文章 [ 1 ]  |  最新文章 4 年前
Alexander
Reply   •   1 楼
Alexander    4 年前

下面是更完整的回答:

def convert_player_types_to_str(player_types):
    n = len(player_types)
    if not n:
        return ''
    if n == 1:
        return player_types[0]
    return ', '.join(player_types[:-1]) + f' and {player_types[-1]}'

>>> convert_player_types_to_str(['normal'])
'normal'

>>> convert_player_types_to_str(['normal', 'ghost'])
'normal and ghost'

>>> convert_player_types_to_str(['normal', 'ghost', 'goblin'])
'normal, ghost and goblin'