我知道这是一个非常简单的问题,但我不知道该如何使用Google。
我能怎么做
print '<a href="%s">%s</a>' % (my_url)
所以要my_url
使用两次?我假设我必须“命名” the %s
,然后在参数中使用字典,但是我不确定正确的语法吗?
仅供参考,我知道我可以my_url
在参数中使用两次,但这不是重点:)
我知道这是一个非常简单的问题,但我不知道该如何使用Google。
我能怎么做
print '<a href="%s">%s</a>' % (my_url)
所以要my_url
使用两次?我假设我必须“命名” the %s
,然后在参数中使用字典,但是我不确定正确的语法吗?
仅供参考,我知道我可以my_url
在参数中使用两次,但这不是重点:)
Answers:
在Python 2.6+和Python 3中,您可能选择使用更新的字符串格式化方法。
print('<a href="{0}">{0}</a>'.format(my_url))
这样可以避免重复输入参数,或者
print('<a href="{url}">{url}</a>'.format(url=my_url))
如果要命名参数。
print('<a href="{}">{}</a>'.format(my_url, my_url))
这是严格的位置,只有警告:format()参数遵循Python规则,其中必须首先使用未命名的args,然后是命名参数,然后是* args(类似于list或tuple的序列),然后是* kwargs(一种dict如果您知道什么对您有好处,请使用字符串进行键控)。首先通过将命名值替换为它们的标签来确定插值点,然后从剩下的位置进行定位。因此,您也可以这样做...
print('<a href="{not_my_url}">{}</a>'.format(my_url, my_url, not_my_url=her_url))
但这不是...
print('<a href="{not_my_url}">{}</a>'.format(my_url, not_my_url=her_url, my_url))
"literal {arg1}".format(arg1="arg!")
已命名的格式对Python 3.5,而更简洁f"literal {arg1}"
是在Python 3.6或更高版本,据我所知一个较新的创新。
print '<a href="%(url)s">%(url)s</a>' % {'url': my_url}
'<a href="%(url)s">%(url)s</a>' % dict(url=my_url)
Python 3.6引入了文字字符串格式化,因此您可以格式化命名参数,而无需在字符串外重复任何命名参数:
print(f'<a href="{my_url:s}">{my_url:s}</a>')
这将进行评估my_url
,因此,如果未定义,您将获得NameError
。实际上,my_url
您可以编写一个任意的Python表达式(而不是),只要它的计算结果为字符串(由于:s
格式代码)即可。如果要为表达式的结果表示字符串表示形式(可能不是字符串),请替换:s
为!s
,就像一般,预文字字符串格式化。
有关文字字符串格式的详细信息,请参阅PEP 498(首次引入该格式)。
对于构建HTML页面,您要使用模板引擎,而不是简单的字符串插值。
render()
方法生成电子邮件正文?没什么,您不必将模板输出提交到HttpResponse()
。Django具有令人尴尬的通用性。
与字典方式一样,了解以下格式可能会很有用:
print '<a href="%s">%s</a>' % (my_url, my_url)
这是一点点的冗余,并且在修改代码时,字典方式当然不易出错,但是仍然可以使用元组进行多次插入。第%s
一个元素替换了元组中的第一个元素,第二%s
个元素替换了元组中的第二个元素,以此类推。
my_url
实际上是一个函数调用,我不想被两次评估。两次
(get_my_url(), )*20
只调用一次函数,然后将其复制20次。