考虑一个字符串 Python 中的 f-string
Consider a String a f-string in Python
假设我有
x = 3
s = "f'12{x}4'"
如何将 s 视为 f 字符串来打印 1234
,就像写 print(f'12{x}4')
当我打印 s
时,它打印为:f'12{x}4'
删除应该解决问题的双引号,因为 f 字符串中的 f 需要在实际字符串之外
你会这样做 -
x = 3
s = f'12{x}4'
这个也可以。
x = 3
s = "12{}4"
print(s.format(x))
只需删除多余的逗号
s = f'12{x}4'
您缺少两个概念。
- 第一个,是告诉 python 您的字符串是 f 字符串的方式。这样做的方法是在第一个引号前添加字符 'f':
f"this will be a f-string"
- 无论您在 {} 之间有什么,它都将是一个先前定义的变量:
x = "something"
f"this will be {x}"
假设你问这个是因为你不能使用 actual f-strings,但也不想使用 format
显式传递参数,也许是因为你不知道哪个参数在 not-really-an-f-string 中,并且假设您不想使用 eval
,因为 eval
.
您可以将 locals
或 globals
范围内的变量传递给 format
:
>>> x = 3
>>> s = '12{x}4'
>>> s.format(**globals())
'1234'
>>> s.format(**locals())
'1234'
取决于 s
的来源(也许是用户输入?)不过,这可能仍然有点冒险,最好定义一个 dict
的“允许”变量并在 format
中使用它。与 globals
和 locals
一样,任何未使用的变量都无关紧要。
>>> vars = {"x": x, "y": y, "z": z}
>>> s.format(**vars)
请注意,这并不能为您提供 f 字符串的全部功能,它也会 计算 表达式。例如,以上不适用于 s = '12{x*x}4'
.
x = 3
s = '12{}4'.format(x)
或
x = 3
print('12%s4' %x)
假设我有
x = 3
s = "f'12{x}4'"
如何将 s 视为 f 字符串来打印 1234
,就像写 print(f'12{x}4')
当我打印 s
时,它打印为:f'12{x}4'
删除应该解决问题的双引号,因为 f 字符串中的 f 需要在实际字符串之外
你会这样做 -
x = 3
s = f'12{x}4'
这个也可以。
x = 3
s = "12{}4"
print(s.format(x))
只需删除多余的逗号
s = f'12{x}4'
您缺少两个概念。
- 第一个,是告诉 python 您的字符串是 f 字符串的方式。这样做的方法是在第一个引号前添加字符 'f':
f"this will be a f-string"
- 无论您在 {} 之间有什么,它都将是一个先前定义的变量:
x = "something"
f"this will be {x}"
假设你问这个是因为你不能使用 actual f-strings,但也不想使用 format
显式传递参数,也许是因为你不知道哪个参数在 not-really-an-f-string 中,并且假设您不想使用 eval
,因为 eval
.
您可以将 locals
或 globals
范围内的变量传递给 format
:
>>> x = 3
>>> s = '12{x}4'
>>> s.format(**globals())
'1234'
>>> s.format(**locals())
'1234'
取决于 s
的来源(也许是用户输入?)不过,这可能仍然有点冒险,最好定义一个 dict
的“允许”变量并在 format
中使用它。与 globals
和 locals
一样,任何未使用的变量都无关紧要。
>>> vars = {"x": x, "y": y, "z": z}
>>> s.format(**vars)
请注意,这并不能为您提供 f 字符串的全部功能,它也会 计算 表达式。例如,以上不适用于 s = '12{x*x}4'
.
x = 3
s = '12{}4'.format(x)
或
x = 3
print('12%s4' %x)