如何使用内联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}." )