Python:使用变量格式化多行字符串

3

我在工作中编写了一个包含大型多行字符串的Python脚本,该字符串还需要展开变量。我习惯于在Python 2.6或Python 3中按以下方式执行此操作:

message = """
          Hello, {foo}
          Sincerely, {bar}
          """
print (message.format(foo = "John", bar = "Doe"))

然而,工作中的服务器正在运行旧版本的Python(2.3.4),不支持string.format。有没有一种方法可以在旧版本的Python中实现这个功能?您能使用%操作符吗?我尝试了这个方法,但似乎并没有起作用:

message = """
          Hello, %(foo)
          Sincerely, %(bar)
          """ % {'foo': 'John', 'bar': "Doe"}

我可以不使用多行字符串来完成,但是我需要格式化的消息非常大,有很多变量。在Python 2.3.4中有没有简单的方法来完成这个任务?(作为Python初学者,如果这是一个愚蠢的问题,请原谅我。)

4个回答

12
你想表达什么。
message = """
          Hello, %(foo)s
          Sincerely, %(bar)s
          """ % {'foo': 'John', 'bar': "Doe"}

请注意末尾的s,它使得通用格式为"%(keyname)s" % {"keyname": "value"}


1
明白了,感谢你和马特。这就是我所缺少的,现在运行得很好。 - Nate
变量拼接怎么样? - user5306470
@AllDani:我不确定你在问什么。如果你的问题是:“如何格式化一个涉及2个变量紧挨在一起的字符串”,那么答案是做类似这样的事情: 'Hello %(foo)s%(bar)s' % {'foo': 'x', 'bar': 'y'}。(或者你可以使用新的 str.format 方法,但对于OP来说,这不是一个选项,因为他们使用较旧版本的Python。) - Eli Courtwright
一个多行变量集合。 - user5306470

3

试试这个

message = """
          Hello, %(foo)s
          Sincerely, %(bar)s
          """ % {'foo': "John", 'bar': "Doe"}

2

基于字典的字符串格式化

message = """
          Hello, %(foo)s
          Sincerely, %(bar)s
          """ % { "foo":"john","bar":"doe"}

0

你打错字了:

message = """
          Hello, %(foo)
          Sincerely, %(bar)
          """ % {'foo': 'John", 'bar': "Doe"}
                        ^

将单引号替换为双引号,程序就可以正常运行。


哎呀,谢谢提醒。我在电脑上输入是正确的,只是发布时出了点问题。让我来修改一下。 - Nate

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