Python F字符串,在大括号内插入带大括号字符串

ars1skjm  于 2022-11-19  发布在  Python
关注(0)|答案(2)|浏览(327)

我有一个值的列表,我想在一个f字符串的括号中插入这些值。列表的长度会随时间的变化而变化。因此,我将为每种情况创建一个正确长度的字符串。我们的想法是创建一个正确长度的字符串,然后将其插入到f-字符串中。这会失败,因为它是作为字符串读取的。是其他变通方法得到了相同的结果,还是我不知道的f字符串的一个特性?

values = [['First Name Last name', 20],['First Name Last name', 25],['First Name Last name', 30]]
test = [1]*3
for i in range(3):
    val = f'''values[{i}]''' #First create innerpart
    test[i] = f'''({{{val}}})''' #Then encapsulate it in curly brackets and paranthesis
insert = ' '.join(test)
f'''Test {insert}'''

输出:“测试({值[0]})({值[1]})({值[2]})”
我想要的输出:'测试('名字姓氏',20)('名字姓氏',25)('名字姓氏',30)'
尝试寻找方法来转义字符串中的引号,但没有成功。

deyfvvtc

deyfvvtc1#

这种更简单的方法正是您所需要的:

string = "Test"
for val in values:
    string += f"({', '.join(str(elem) for elem in val)}) "
print(string[:-1])

输出量:

'Test(First Name Last name, 20) (First Name Last name, 25) (First Name Last name, 30)'

不需要转义大括号,只需连接每个列表中的所有元素并正确设置它们的格式。

5m1hhzi4

5m1hhzi42#

不知道这些花括号在做什么,但这里有一个简单得多的循环:

values = [['First Name Last name', 20],['First Name Last name', 25],['First Name Last name', 30]]    
test = ""
for val in values:
    test += f"({val}) "

print(f"Test{test})

这样,您就不必对字符串/值的长度进行“硬编码”。

相关问题