如果 f-string 像 Julia 中可用的字符串格式?

Ami*_*ola 5 python string formatting julia

所以我是 Julia 的新手,并学习了各种字符串格式化方法。主要来自与此类似的网站。

所以我在 Python 中经常使用 f 字符串,而不是 .format() 的忠实粉丝。所以我想知道自从有人创建了 Formatting.jl 包来在 Julia 中引入 .format() 之类的功能,是否有任何正在进行的或有用的包对 f-strings 做同样的事情?现在我也用谷歌搜索了一下,但没有找到任何东西。

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

a = 10
b = 20
print(f'The multiplication is = {a * b}')
Run Code Online (Sandbox Code Playgroud)

如果有人想知道什么是 f 字符串,请参阅

lun*_*ben 7

是的,可以使用标准的 Julia 字符串:

x = "World!"
y = 42
greeting = "Hello $x, $(y^2) !" # gives "Hello World!, 1764 !"
Run Code Online (Sandbox Code Playgroud)

另见此处:

https://docs.julialang.org/en/v1/manual/strings/#string-interpolation

编辑:上面评论中的例子是

j = 10; b = 20
println("The numbers and their square are $j, $b and $(j^2), $(b^2)")
Run Code Online (Sandbox Code Playgroud)

  • 好吧,我明白我做错了什么,这太愚蠢了,我不敢相信我犯了这样的错误。所以我试图用这种方式在打印中使用 + 符号连接两个字符串,现在才意识到 - 在 Julia 中,字符串连接是通过 * 发生的。嗯,抱歉打扰你这么多了。当我在 Julia 中学习如何连接字符串的那一天,我知道有一天这会引起一些混乱。 (2认同)

Tom*_*mas 5

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

比较:

包裹 句法
PyFormattedStrings.jl f"Our yield is {harvest(crop):.3G} kg."
FMt.jl f"Our yield is {$(harvest(crop)):.3G} kg."
格式化.jl fmt("Our yield is {:.3f} kg.", harvest(crop))

(请注意,格式化不支持g/ G)。

PyFormattedStrings.jl 使用printf语法,因此右对齐是通过 , 完成的{var:20g},而不是{var:>20g}像 Python 中那样。Fmt.jl确实使用 Python 语法。这两个包都不支持f"{4+4=}"Python 3.8 的语法。(尽管朱莉娅有@show)。