我想指定一个包含行继续符号和连接字符的字符串。如果我回显一堆相关的值,这非常有用。这是一个只有两个参数的简单示例:
temp = "here is\n"\
+"\t{}\n"\
+"\t{}".format("foo","bar")
print(temp)
这是我得到的:
here is
{}
foo
这就是我的期望:
here is
foo
bar
是什么给出了?
答案 0 :(得分:4)
您可以尝试这样的事情:
temp = ("here is\n"
"\t{}\n"
"\t{}".format("foo","bar"))
print(temp)
或者喜欢:
# the \t have been replaced with
# 4 spaces just as an example
temp = '''here is
{}
{}'''.format
print(temp('foo', 'bar'))
VS。你有什么:
a = "here is\n"
b = "\t{}\n"
c = "\t{}".format("foo","bar")
print( a + b + c)
答案 1 :(得分:3)
str.format
。可以把它想象成1 + 2 * 3
,其中在加法之前评估乘法。
只需将整个字符串括在括号中,表示在调用str.format
之前需要连接字符串:
temp = ("here is\n"
+ "\t{}\n"
+ "\t{}").format("foo","bar")
答案 2 :(得分:2)
Python实际上看到了这个:
Concatenate the result of
"here is\n"
with the resuslt of
"\t{}\n"
with the result of
"\t{}".format("foo","bar")
您有3个单独的字符串文字,只有最后一个应用了str.format()
方法。
请注意,Python解释器在运行时连接字符串 。
您应该使用隐式字符串文字串联。无论何时在表达式中并排放置两个字符串文字,而之间没有其他运算符,您将得到一个字符串:
"This is a single" " long string, even though there are separate literals"
这与字节码一起存储为单个常量:
>>> compile('"This is a single" " long string, even though there are separate literals"', '', 'single').co_consts
('This is a single long string, even though there are separate literals', None)
>>> compile('"This is two separate" + " strings added together later"', '', 'single').co_consts
('This is two separate', ' strings added together later', None)
来自String literal concatenation documentation:
允许使用多个相邻的字符串或字节文字(由空格分隔),可能使用不同的引用约定,并且它们的含义与它们的串联相同。因此,
"hello" 'world'
相当于"helloworld"
。
当您使用隐式字符串文字串联时,最后的任何.format()
调用都将应用于整个单字符串。
接下来,您不希望使用\
反斜杠行继续。请使用括号,它更清晰:
temp = (
"here is\n"
"\t{}\n"
"\t{}".format("foo","bar"))
您可能还想了解多行字符串文字,其中您在开头和结尾使用三个引号。这些字符串中允许使用换行符,并且仍然是值的一部分:
temp = """\
here is
\t{}
\t{}""".format("foo","bar")
我在打开\
后使用"""
反斜杠来转义第一个换行符。
答案 3 :(得分:1)
格式化功能仅适用于最后一个字符串。
temp = "here is\n"\
+"\t{}\n"\
+"\t{}".format("foo","bar")
这样做:
temp = "here is\n" + "\t{}\n"\ + "\t{}".format("foo","bar")
关键是.format()
函数只发生在最后一个字符串中:
"\t{}".format("foo","bar")
您可以使用括号获得所需的结果:
temp = ("here is\n"\
+"\t{}\n"\
+"\t{}").format("foo","bar")
print(temp)
#here is
# foo
# bar