gpt4 book ai didi

python - f-string 的行为与嵌套格式化的 format 方法不同

转载 作者:太空宇宙 更新时间:2023-11-03 13:58:59 31 4
gpt4 key购买 nike

我正在使用 format 进行嵌套格式化,但它没有按预期工作。但是,如果我尝试使用 F 弦来完成它,它会完美地工作。

例子:

这样做:

values = 'first', 'second', 'third'
a = f"""cardinality and values: {'|'.join(f'val:{val}, card:{i}'for i, val in enumerate(values))} """

给我这个(需要的结果):

'cardinality and values: val:first, card:0|val:scond, card:1|val:third, card:2'

但是,如果我尝试使用 format 来做到这一点:

a = """cardinality  and values: {'|'.join('val:{val}, card:{i}'.format(val=val, i=i) for i, val in enumerate(values))} """.format(values=values)

我得到以下异常:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: "'|'"

我如何使用 format 做到这一点?

我需要使用 format 而不是 f-strings 因为另一个文件导入这个字符串然后格式化它。

最佳答案

format 只是不如 f-strings 强大,所以你必须简化格式字符串。

只需从格式字符串之外获取理解:

a = "cardinality  and values: {} ".format('|'.join('val:{val}, card:{i}'.format(val=val, i=i) for i, val in enumerate(values)))

结果:

cardinality  and values: val:first, card:0|val:second, card:1|val:third, card:2 

如果你想制作一个单行"template",你可以使用 lambda:

a = lambda v : "cardinality  and values: {} ".format('|'.join('val:{val}, card:{i}'.format(val=val, i=i) for i, val in enumerate(v)))

正在打电话

print(a(values))

调用 lambda,它使用传递的 values 执行格式化。这是我能想到的最接近没有f弦的f弦。

关于python - f-string 的行为与嵌套格式化的 format 方法不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51502052/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com