【问题标题】:How do I put a variable’s value inside a string?如何将变量放入字符串中?
【发布时间】:2019-08-14 12:53:58
【问题描述】:

我想将int 放入string。这就是我目前正在做的事情:

num = 40
plot.savefig('hanning40.pdf') #problem line

我必须为几个不同的数字运行程序,所以我想做一个循环。但是像这样插入变量是行不通的:

plot.savefig('hanning', num, '.pdf')

如何在 Python 字符串中插入变量?

【问题讨论】:

    标签: python string variables


    【解决方案1】:

    哦,很多很多方法......

    字符串连接:

    plot.savefig('hanning' + str(num) + '.pdf')
    

    转换说明符:

    plot.savefig('hanning%s.pdf' % num)
    

    使用局部变量名:

    plot.savefig('hanning%(num)s.pdf' % locals()) # Neat trick
    

    使用str.format()

    plot.savefig('hanning{0}.pdf'.format(num)) # Note: This is the preferred way since 3.6
    

    使用 f 字符串:

    plot.savefig(f'hanning{num}.pdf') # added in Python 3.6
    

    这是新的首选方式:


    使用string.Template

    plot.savefig(string.Template('hanning${num}.pdf').substitute(locals()))
    

    【讨论】:

    • 要使用带多个参数的格式字符串运算符,可以使用元组作为操作数:'foo %d, bar %d' % (foo, bar)
    • 你的巧妙技巧也适用于新的格式语法:plot.savefig('hanning{num}s.pdf'.format(**locals()))
    • 随着 Python 3.6 中 f-strings 的引入,现在可以写成plot.savefig(f'hanning{num}.pdf')。我用这个信息添加了一个答案。
    • 在调用全局变量的函数中使用 locals () 时遇到问题;使用 % globals() 代替它工作
    • “应该有一个——最好只有一个——显而易见的方法。”。
    【解决方案2】:
    plot.savefig('hanning(%d).pdf' % num)
    

    % 运算符在跟随字符串时,允许您通过格式代码(在本例中为 %d)将值插入该字符串。有关更多详细信息,请参阅 Python 文档:

    https://docs.python.org/3/library/stdtypes.html#printf-style-string-formatting

    【讨论】:

    • 请注意,% 运算符自 Python 3.1 起已弃用。新的首选方法是使用PEP 3101 中讨论的.format() 方法,并在Dan McDougall 的回答中提到。
    • % 运算符未被弃用 - 它现在不是首选方式。
    【解决方案3】:

    在 Python 3.6 中使用the introduction of formatted string literals(简称“f-strings”),现在可以用更简洁的语法编写:

    >>> name = "Fred"
    >>> f"He said his name is {name}."
    'He said his name is Fred.'
    

    根据问题中给出的示例,它看起来像这样

    plot.savefig(f'hanning{num}.pdf')
    
    【解决方案4】:

    不确定您发布的所有代码到底做了什么,但要回答标题中提出的问题,您可以使用 + 作为普通字符串 concat 函数以及 str()。

    "hello " + str(10) + " world" = "hello 10 world"
    

    希望有帮助!

    【讨论】:

    • 虽然这个答案是正确的,但应该避免使用 + 构建字符串,因为它非常昂贵
    【解决方案5】:

    一般来说,您可以使用以下方法创建字符串:

    stringExample = "someString " + str(someNumber)
    print(stringExample)
    plot.savefig(stringExample)
    

    【讨论】:

      【解决方案6】:

      如果您想将多个值放入字符串中,您可以使用format

      nums = [1,2,3]
      plot.savefig('hanning{0}{1}{2}.pdf'.format(*nums))
      

      将产生字符串hanning123.pdf。这可以用任何数组来完成。

      【讨论】:

        【解决方案7】:

        我需要一个扩展版本:我需要生成一系列格式为“file1.pdf”、“file2.pdf”等的文件名,而不是在字符串中嵌入单个数字。这它是如何工作的:

        ['file' + str(i) + '.pdf' for i in range(1,4)]
        

        【讨论】:

          【解决方案8】:

          您只需使用

          将 num 变量转换为字符串
          str(num)
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-12-09
            • 1970-01-01
            • 2022-07-25
            • 2020-09-03
            • 1970-01-01
            • 2012-05-05
            • 2020-05-31
            相关资源
            最近更新 更多