带有索引错误的Python字符串格式化

时间:2019-05-25 07:11:23

标签: python indexing format

我用Python为自己的游戏制作了字典:

monster = {'name' : 'max', 'attack' : 5, 'health' : 50}

我想用字符串格式打印怪物的健康状况:

print(f'Monster Health : {monster['health']}')

我希望可以打印出怪物的生命值,但是出现错误:

print(f'Monster Health : {monster['health']}')
SyntaxError: invalid syntax

2 个答案:

答案 0 :(得分:2)

您正在对f字符串和字典键使用单引号。
只需将f字符串单引号替换为双引号即可:

print(f"Monster Health : {monster['health']}")

记住这一点:
如果使用单引号,则应将双引号引起来。如果您使用双引号,则应将单引号用于引号内。

答案 1 :(得分:1)

您可以在双引号str中使用单引号,也可以在双引号str中使用双引号。

monster = {
    'name': 'max', 
    'attack': 5, 
    'health': 50
}

print(f"Monster Health: {monster['health']}")
print(f'Monster Health: {monster["health"]}')

这两个打印语句都可以使用。

但是,您不能在括号内的f字符串中使用转义序列。

print(f'Monster Health: {monster[\'health\']}')

这将导致SyntaxError: f-string expression part cannot include a backslash

但是,在dict中使用str值的更Python方式是使用str.format_map(mapping)函数。

>>> print('Monster Health: {health}'.format_map(monster))
Monster Health: 50

>>> print('Monster Health: {health}\nMonster Name: {name}\nMonster Attack: {attack}'.format_map(monster))
Monster Health: 50
Monster Name: max
Monster Attack: 5

这允许您仅在keys中使用str并将值从dict插值到str

或者,您可以将dict unpacking operator, **format()一起使用。

>>> print('Monster Health: {health}\nMonster Name: {name}\nMonster Attack: {attack}'.format(**monster))
Monster Health: 50
Monster Name: max
Monster Attack: 5