使用f字符串在@

时间:2018-12-02 19:04:20

标签: python python-3.x

我有两个变量,总共存储两个数字。   我想将这些数字组合在一起,并用逗号分隔。我读到可以使用{variablename:+}插入加号或空格或零,但逗号不起作用。

x = 42
y = 73
print(f'the number is {x:}{y:,}')

这是我的怪异解决方案,我先添加+,然后用逗号替换+。还有更直接的方法吗?

x = 42
y = 73
print(f'the number is {x:}{y:+}'.replace("+", ","))

说我有名字和域名,我想建立一个电子邮件地址列表。因此,我想将两个名称在Middel中的@符号和结尾的.com融合。

那只是我能想到的一个例子。

x = "John"
y = "gmail"
z = ".com"
print(f'the email is {x}{y:+}{z}'.replace(",", "@"))

导致:

print(f'the email is {x}{y:+}{z}'.replace(",", "@"))
ValueError: Sign not allowed in string format specifier

2 个答案:

答案 0 :(得分:5)

您使事情变得过于复杂。

由于仅对{}之间的内容进行评估,因此您可以简单地进行

print(f'the number is {x},{y}')(第一个示例),

print(f'the email is {x}@{y}{z}')秒。

答案 1 :(得分:3)

当您将某些内容放入f格式的“ {}” 中时,它实际上正在被评估。因此,所有不应放在“ {}”之外的内容。 一些例子:

x = 42
y = 73
print(f'Numbers are: {x}, {y}') # will print: 'Numbers are: 42, 73'
print(f'Sum of numbers: {x+y}') # will print: 'Sum of numbers: 115'

您甚至可以执行以下操作:

def compose_email(user_name, domain):
      return f'{user_name}@{domain}'

user_name = 'user'
domain = 'gmail.com'
print(f'email is: {compose_email(user_name, domain)}')

>>email is: user@gmail.com

有关更多示例,请参见: Nested f-strings