【问题标题】:Resolving a variable dynamically in python [closed]在python中动态解析变量[关闭]
【发布时间】:2020-11-27 01:43:18
【问题描述】:

假设我有一个字符串 -

my_str = "From {country} with Love"

变量country目前不可用,稍后设置为

country = "Russia".

现在 我可以使用动态解析的内联变量值打印字符串吗?有点像 -

print(f"{my_str}")

哪个会输出

From Russia with Love

我尝试使用 eval() 但没有帮助。

【问题讨论】:

  • my_str = f"From {country} with Love" ??
  • 其实不行,你必须说my_str = f"From {country} with Love"然后你可以按照Q中所说的进行,输出就可以了

标签: python f-string dynamic-variables


【解决方案1】:
my_str = "From {} with Love"
country = "Russia"
print(my_str.format(country))

如果您喜欢使用名称,您也可以这样做:

my_str = "From {country} with Love"
country = "Russia"
print(my_str.format(country=country))

【讨论】:

  • 这是正确答案。
  • 为什么不用f字符串,没有坏处,除了兼容python 2.x
  • 感谢@Andreas,正是我想要的。不知道我们也可以根据名称使用它。
  • @NEO 很高兴我能帮上忙,编码愉快!
  • @Cool Cloud 一个 f-string 是语法我认为你不能通过字符串生成语法。
【解决方案2】:

这是一个想法:

def str(country):
  my_str="From %s with Love" %country
  print(my_str)
str("Russia")

这将打印From Russia with Love

【讨论】:

    【解决方案3】:

    我建议使用模板,例如 Pythons built in templating:

    from string import Template
    
    t = Template("From $country with Love")
    s = t.substitute(country="Russia")
    print(s)
    

    【讨论】:

      【解决方案4】:

      这应该也可以:

      country = "Russia"
      my_str = f"From {country} with Love"
      print(f"{my_str}")
      

      【讨论】:

      • 对于 f 字符串,您必须在字符串之前初始化“国家”。你也可以简单地做: print(my_str)
      • 谢谢,好点子。顺便说一句,f-strings 可以像我上面发布的示例那样用于变量定义吗?
      • 我不这么认为,因为据我所知 f 字符串是语法而不是对象。并且很可能无法通过字符串操作语法。
      • 呵呵,我想我在这里找到了答案:stackoverflow.com/questions/41306928/…
      • 啊,很好的解释,比我能做的要好得多:P
      【解决方案5】:

      这应该可以工作

      variable = "Russia"
      print(f'my country is {variable} and I live in it')
      

      【讨论】:

        【解决方案6】:

        你可以这样创建变量:

        my_str = f"From {country} with Love"
        

        然后当country 变量被赋值时,它会在my_str 变量中自动替换。

        【讨论】:

        • 请注意,当您尝试打印字符串而不启动变量 country 时,这将引发 NameError。
        • 正确@DjerroNeth,我收到错误NameError: name 'country' is not defined。 @pacuna 我在分配 my_str 时没有设置变量。它在稍后阶段可用。
        猜你喜欢
        • 1970-01-01
        • 2019-02-27
        • 2021-11-20
        • 1970-01-01
        • 2010-10-17
        • 2012-02-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多