mpe*_*pen 128 python string syntax
我知道这是一个非常简单的问题,但我不知道如何谷歌.
我能怎么做
print '<a href="%s">%s</a>' % (my_url)
Run Code Online (Sandbox Code Playgroud)
这样my_url两次使用?我假设我必须"命名" %s然后在params中使用dict,但我不确定正确的语法?
仅供参考,我知道我可以my_url在参数中使用两次,但这不是重点:)
Ign*_*ams 215
print '<a href="%(url)s">%(url)s</a>' % {'url': my_url}
Run Code Online (Sandbox Code Playgroud)
Gre*_*all 69
在Python 2.6+和Python 3中,您可以选择使用较新的字符串格式化方法.
print('<a href="{0}">{0}</a>'.format(my_url))
Run Code Online (Sandbox Code Playgroud)
这样可以避免重复参数,或者
print('<a href="{url}">{url}</a>'.format(url=my_url))
Run Code Online (Sandbox Code Playgroud)
如果你想要命名参数.
print('<a href="{}">{}</a>'.format(my_url, my_url))
Run Code Online (Sandbox Code Playgroud)
这是严格的位置,只有格言()参数遵循Python规则,其中未命名的args必须首先,然后是命名参数,然后是*args(像列表或元组一样的序列)然后*kwargs(一个字典)如果你知道什么对你有好处,请用字符串键入.首先通过在其标签处替换命名值来确定插值点,然后从左边的位置确定位置.所以,你也可以这样做......
print('<a href="{not_my_url}">{}</a>'.format(my_url, my_url, not_my_url=her_url))
Run Code Online (Sandbox Code Playgroud)
但不是这个......
print('<a href="{not_my_url}">{}</a>'.format(my_url, not_my_url=her_url, my_url))
Run Code Online (Sandbox Code Playgroud)
ger*_*rit 36
Python 3.6引入了文字字符串格式,因此您可以格式化命名参数,而不会在字符串外重复任何命名参数:
print(f'<a href="{my_url:s}">{my_url:s}</a>')
Run Code Online (Sandbox Code Playgroud)
这将进行评估my_url,所以如果它没有定义,你会得到一个NameError.事实上,my_url您可以编写任意Python表达式,只要它计算为字符串(因为:s格式化代码),而不是.如果您想要一个表达式结果的字符串表示形式,可能不是一个字符串,请替换:s为!s,就像使用常规的预文字字符串格式一样.
有关文字字符串格式的详细信息,请参阅第一次介绍它的PEP 498.
你会沉迷于语法.
同样是C#6.0,EcmaScript开发人员也熟悉这种语法.
In [1]: print '{firstname} {lastname}'.format(firstname='Mehmet', lastname='A?a')
Mehmet A?a
In [2]: print '{firstname} {lastname}'.format(**dict(firstname='Mehmet', lastname='A?a'))
Mehmet A?a
Run Code Online (Sandbox Code Playgroud)
要构建HTML页面,您需要使用模板引擎,而不是简单的字符串插值.