如何使用内联variables创build多行Pythonstring?

我正在寻找一种干净的方式来使用多行Pythonstring中的variables。 说我想做以下事情:

string1 = go string2 = now string3 = great """ I will $string1 there I will go $string2 $string3 """ 

我正在查看Perl中是否有类似于$的元素来表示Python语法中的variables。

如果不是 – 用variables创build多行string的最简洁的方法是什么?

常用的方法是format()函数:

 >>> s = "This is an {example} with {vars}".format(vars="variables", example="example") >>> s 'This is an example with variables' 

你也可以通过一个字典variables:

 >>> d = { 'vars': "variables", 'example': "example" } >>> s = "This is an {example} with {vars}" >>> s.format(**d) 'This is an example with variables' 

与你问的(语法方面)最接近的是模板string 。 例如:

 >>> from string import Template >>> t = Template("This is an $example with $vars") >>> t.substitute({ 'example': "example", 'vars': "variables"}) 'This is an example with variables' 

我应该补充一点, format()函数更为常用,因为它很容易获得,并且不需要导入行。

您可能可以使用一些Googlesearch来回答这个问题,但是这里是您要查找的代码。 请注意,我更正了你的string的语法。

 string1 = "go" string2 = "now" string3 = "great" s = """ I'm will %s there I will go %s %s """ % (string1, string2, string3) print s 

一些阅读来了解更多关于Pythonstring格式的知识:

那你想要什么:

 >>> string1 = "go" >>> string2 = "now" >>> string3 = "great" >>> mystring = """ ... I'm will {string1} there ... I will go {string2} ... {string3} ... """ >>> locals() {'__builtins__': <module '__builtin__' (built-in)>, 'string3': 'great', '__package__': None, 'mystring': "\nI'm will {string1} there\nI will go {string2}\n{string3}\n", '__name__': '__main__', 'string2': 'now', '__doc__': None, 'string1': 'go'} >>> print mystring.format(**locals()) I'm will go there I will go now great 

一个字典可以传递给format() ,每个关键字的名字将成为每个关联值的variables。

 dict = {'string1': 'go', 'string2': 'now', 'string3': 'great'} multiline_string = '''I'm will {string1} there I will go {string2} {string3}'''.format(**dict) print(multiline_string) 

另外一个列表可以传递给format() ,在这种情况下,每个值的索引号将被用作variables。

 list = ['go', 'now', 'great'] multiline_string = '''I'm will {0} there I will go {1} {2}'''.format(*list) print(multiline_string) 

上面的两个解决scheme将输出相同的:

我会去那里
我要走了

我认为上面的答案忘记了{}:

 from string import Template t = Template("This is an ${example} with ${vars}") t.substitute({ 'example': "example", 'vars': "variables"}) 'This is an example with variables' 

您可以在多行或冗长的单行string中使用Python 3.6的f-string作为variables。

多行string中的variables

 string1 = "go" string2 = "now" string3 = "great" multiline_string = f"""I will {string1} there. I will go {string2}. {string3}.""" print(multiline_string) 

我将会去那里
我要走了

一个冗长的单行string中的variables

 string1 = "go" string2 = "now" string3 = "great" singleline_string = (f"I will {string1} there. " f"I will go {string2}. " f"{string3}." ) print(singleline_string) 

我将会去那里。 我要走了。 大。


或者,对于多行string,也可以使用()\n

 singleline_string = (f"I will {string1} there\n" f"I will go {string2}.\n" f"{string3}." )