如何在Python字符串中替换占位符

6
如果我有一个像这样的字符串在Python中,我该如何填充占位符?
s = """
uri1: %s/file1.txt
md5: %s
uri2: %s/file2.txt
md5: %s
uri3: %s/file3.txt
md5: %s
"""
uri会保持不变,但md5会改变。因此,对于上述情况,最终输出将类似于以下内容:
uri1: file:///somepath/foo/file1.txt
md5: 1234
uri2: file:///somepath/foo/file2.txt
md5: 4321
uri3: file:///somepath/foo/file3.txt
md5: 9876

我知道我可以填充每个%s,但如果我不想每次都重复相同的变量怎么办?也就是说,我想避免这样做:

s = """
uri1: %s/file1.txt
md5: %s
uri2: %s/file2.txt
md5: %s
uri3: %s/file3.txt
md5: %s
""" % (self.URI, self.md5_for_1, self.URI, self.md5_for_2, self.URI, self.md5_for_3)

在上面的代码中,我必须每次都指定self.URI...我想知道是否有一种方法只需指定一次就可以了?
3个回答

7

请看str.format

string = """
uri1: {s.URI}/file1.txt
md5: {s.md5_for_1}
uri2: {s.URI}/file2.txt
md5: {s.md5_for_2}
uri3: {s.URI}/file3.txt
md5: {s.md5_for_3}
""".format(s=self)

这里有一个帮助页面。https://pyformat.info


4

您可以多次使用值,例如:

"{0} {0} {1}".format("a", "b")
'a a b'

3
为什么不使用.format呢?
s = """
uri1: {uri}/file1.txt
md5: {uri}
uri2: {uri}/file2.txt
md5: {uri}
uri3: {uri}/file3.txt
md5: {uri}
""".format(uri=self.URI)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接