Julia中是否有类似f-string的字符串格式化功能?

19

所以我还不太熟悉Julia,并学习了各种字符串格式化的方法。主要是从类似于这个网站上学习的。

在Python中,我经常使用f-字符串,不太喜欢.format()。因此,我想知道是否有人创建了Formatting.jl Package来在Julia中实现类似.format()的功能,是否有任何正在进行或有用的包可以实现f-字符串的相同功能?我也在Google上搜索了一下,但没有找到任何信息。

我的主要问题是我想复制这个行为:

a = 10
b = 20
print(f'The multiplication is = {a * b}')

如果有人想知道什么是f-strings,请参考此链接

3个回答

17

1
print("乘积为 $(j * b)") - lungben
2
好的,我明白我做错了什么,这太愚蠢了,我不敢相信我会犯这样的错误。所以我试图使用+号在print中连接两个字符串,现在才意识到-在julia中,字符串连接是通过*实现的。嗯,很抱歉一直打扰你。当我在Julia中学习到这是如何连接字符串的那一天,我就知道有一天这会引起一些混淆。 - Amit Amola
1
没问题 - 字符串拼接在Julia中有一个相当不寻常的符号;-) - lungben
我在想他们为什么要这样做。这背后是否有一些数学原因?鉴于Julia是一种相当友好的数学语言。 - Amit Amola
1
是的,请参见https://docs.julialang.org/en/v1/manual/strings/#man-concatenation。 - lungben
显示剩余3条评论

6

有多个软件包,其中最不为人知但是我最喜欢的是PyFormattedStrings.jl

比较:

软件包 语法
PyFormattedStrings.jl f"Our yield is {harvest(crop):.3G} kg."
Fmt.jl f"Our yield is {$(harvest(crop)):.3G} kg."
Formatting.jl fmt("Our yield is {:.3f} kg.", harvest(crop))
(请注意,格式化不支持 g/G)。
PyFormattedStrings.jl 使用 printf 语法,所以例如右对齐是用 {var:20g},而不是 Python 中的 {var:>20g}。Fmt.jl 确实 使用了 Python 的语法。 两个包都不支持 Python 3.8 的 f"{4+4=}" 语法。(尽管 Julia 有 @show)。

2
如果你想比默认的字符串插值更加控制数字格式,你可以使用 Julia 中的 Formatting.jl 包,它提供了类似 Python f-string 的功能。

1
从2023年开始,请勿使用Formatting.jl包。它存在灾难性的正确性错误,并且未得到维护,请参见https://github.com/JuliaIO/Formatting.jl/issues/108。 - Michael Goerz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接