【问题标题】:If the f-string like string formatting available in Julia?如果 Julia 中可以使用类似 f 字符串的字符串格式?
【发布时间】:2021-01-08 13:22:55
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: python string formatting julia


    【解决方案1】:

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

    x = "World!"
    y = 42
    greeting = "Hello $x, $(y^2) !" # gives "Hello World!, 1764 !"
    

    参见此处:

    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)")
    

    【讨论】:

    • 嗯,这不是我所指的。所以我一直在寻找这种功能:j = 10; b = 20 print(f'数字和它们的平方是 {j}, {b} 和 {j2}, {b2}') 我希望我在这里有意义。 Julia中是否存在类似的东西?
    • print("乘数是$(j * b)")
    • 好吧,我明白我做错了什么,这太愚蠢了,我不敢相信我犯了这样的错误。所以我试图以这种方式在 print 中使用 + 符号连接两个字符串,现在才意识到 - 在 julia 中,字符串连接是通过 *.好吧,抱歉这么多纠缠你。我在 Julia 中了解到这就是你如何连接字符串的那一天,我知道有一天这会引起一些混乱。
    • 没问题 - 字符串连接是 Julia 有一个不常见的符号 ;-)
    【解决方案2】:

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

    比较:

    Package Syntax
    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)。

    【讨论】:

      【解决方案3】:

      如果您想对数字格式进行比默认字符串插值更多的控制,您可以使用 Julia 中的Formatting.jl package,它提供了 Python f-string 功能。

      【讨论】:

        猜你喜欢
        • 2016-12-17
        • 2020-05-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-30
        • 1970-01-01
        相关资源
        最近更新 更多