非常基本的字符串格式不起作用 (Python)
Very basic string formatting not working (Python)
我正在学习 python 并尝试一个非常简单的字符串格式化行,但它不能正常工作。从下面的输出中可以看出,它在 3 个中的最后一个插入数字,但前 2 个只显示代码而不是数字。我确信解决方案很简单,但我尝试查看我的代码与学习 material 中的代码,但我看不出有任何区别。在 Visual Studio 2015 年使用 Python 3.4。
提前感谢您提供的任何帮助! :)
CODE(面积为200)
print("The area of the square would be {0:f} " .format(area))
#This is an example with multiple numbers and use of "\" outside of a string to allow for
#multiple lines of code in the same line spread out over numerous lines
print("Here are three other numbers." + \
" First number is {0:d}, second number is {1:d}, \n" + \
"third number is {2:d}" .format(7,8,9))
输出
正方形的面积为 200.000000
这是另外三个号码。第一个数字是 {0:d},第二个数字是 {1:d},
第三个数字是 9.
线程 'MainThread' (0xc10) 已退出,代码为 0 (0x0)。
程序“[4968] python.exe”已退出,代码为 -1073741510 (0xc000013a)。
您的字符串分为两部分(实际上是三部分),但第一个字符串并不真正相关,因此我们将其省略。但是,格式仅应用于最后一个字符串,在本例中为 "third number is {2:d}"
,因此字符串 "First number is {0:d}, second number is {1:d}, \n"
中的格式字符串将被忽略。
对我有用的是以下代码:
print("Here are three other numbers." + " First number is {0:d}, second number is {1:d}, \n third number is {2:d}".format(7,8,9))
您遇到了优先问题。您实际做的是连接三个字符串 - "Here are three other numbers."
、" First number is {0:d}, second number is {1:d}, \n"
和 "third number is {2:d}" .format(7,8,9)
的结果。 format
调用仅应用于第三个字符串,因此仅替换 {2:d}
.
解决此问题的一种方法可能是用括号 (()
) 将您打算使用的字符串连接括起来,以便首先对其进行评估:
print(("Here are three other numbers." + \
" First number is {0:d}, second number is {1:d}, \n" + \
"third number is {2:d}") .format(7,8,9))
但更简洁的方法是完全放弃字符串连接并仅使用多行字符串(注意缺少 +
运算符):
print("Here are three other numbers." \
" First number is {0:d}, second number is {1:d}, \n" \
"third number is {2:d}" .format(7,8,9))
这里的问题是 format 方法只在 3 个相加的字符串中的最后一个字符串被调用。您应该应用格式操作 AFTER 连接字符串,或者使用接受换行符的单一字符串格式(这样您就不必首先连接字符串)。
要在连接后应用,您只需在字符串连接周围使用一组额外的括号,例如
print(("Here are three other numbers." + \
" First number is {0:d}, second number is {1:d}, \n" + \
"third number is {2:d}") .format(7,8,9))
或者您可以使用三重引号来接受换行符,例如
print("""Here are three other numbers.\
First number is {0:d}, second number is {1:d},
third number is {2:d}""" .format(7,8,9))
其中 \
允许在不会打印的代码中换行。
我正在学习 python 并尝试一个非常简单的字符串格式化行,但它不能正常工作。从下面的输出中可以看出,它在 3 个中的最后一个插入数字,但前 2 个只显示代码而不是数字。我确信解决方案很简单,但我尝试查看我的代码与学习 material 中的代码,但我看不出有任何区别。在 Visual Studio 2015 年使用 Python 3.4。
提前感谢您提供的任何帮助! :)
CODE(面积为200)
print("The area of the square would be {0:f} " .format(area))
#This is an example with multiple numbers and use of "\" outside of a string to allow for
#multiple lines of code in the same line spread out over numerous lines
print("Here are three other numbers." + \
" First number is {0:d}, second number is {1:d}, \n" + \
"third number is {2:d}" .format(7,8,9))
输出
正方形的面积为 200.000000
这是另外三个号码。第一个数字是 {0:d},第二个数字是 {1:d}, 第三个数字是 9.
线程 'MainThread' (0xc10) 已退出,代码为 0 (0x0)。
程序“[4968] python.exe”已退出,代码为 -1073741510 (0xc000013a)。
您的字符串分为两部分(实际上是三部分),但第一个字符串并不真正相关,因此我们将其省略。但是,格式仅应用于最后一个字符串,在本例中为 "third number is {2:d}"
,因此字符串 "First number is {0:d}, second number is {1:d}, \n"
中的格式字符串将被忽略。
对我有用的是以下代码:
print("Here are three other numbers." + " First number is {0:d}, second number is {1:d}, \n third number is {2:d}".format(7,8,9))
您遇到了优先问题。您实际做的是连接三个字符串 - "Here are three other numbers."
、" First number is {0:d}, second number is {1:d}, \n"
和 "third number is {2:d}" .format(7,8,9)
的结果。 format
调用仅应用于第三个字符串,因此仅替换 {2:d}
.
解决此问题的一种方法可能是用括号 (()
) 将您打算使用的字符串连接括起来,以便首先对其进行评估:
print(("Here are three other numbers." + \
" First number is {0:d}, second number is {1:d}, \n" + \
"third number is {2:d}") .format(7,8,9))
但更简洁的方法是完全放弃字符串连接并仅使用多行字符串(注意缺少 +
运算符):
print("Here are three other numbers." \
" First number is {0:d}, second number is {1:d}, \n" \
"third number is {2:d}" .format(7,8,9))
这里的问题是 format 方法只在 3 个相加的字符串中的最后一个字符串被调用。您应该应用格式操作 AFTER 连接字符串,或者使用接受换行符的单一字符串格式(这样您就不必首先连接字符串)。
要在连接后应用,您只需在字符串连接周围使用一组额外的括号,例如
print(("Here are three other numbers." + \
" First number is {0:d}, second number is {1:d}, \n" + \
"third number is {2:d}") .format(7,8,9))
或者您可以使用三重引号来接受换行符,例如
print("""Here are three other numbers.\
First number is {0:d}, second number is {1:d},
third number is {2:d}""" .format(7,8,9))
其中 \
允许在不会打印的代码中换行。