如何消除反斜杠后的白色space (Python 3.4)
How to eliminate white space after backslash (Python 3.4)
寻找一些关于文本格式的建议。我正在尝试打印一个简单的单位转换(英制到公制)的结果,但是在尝试打印双撇号符号时不断得到所有这些 spaces。
代码:
print("You entered ", imp_height_flt, "\" which converts into " \
"%.2f" % imp_height_converted, "m.")
当我 运行 我得到的程序:
You entered 5.9 " which converts into 1.80 m.
我正在尝试消除 9 和双撇号之间的 space。
对整个字符串使用格式:
print("You entered %.1f\" which converts into "
"%.2fm." % (imp_height_flt, imp_height_converted))
或者您可以告诉 print()
函数不要使用 spaces 作为分隔符:
print("You entered ", imp_height_flt, "\" which converts into "
"%.2f" % imp_height_converted, "m.",
sep='')
sep
参数的默认值是 ' '
,一个 space,但您可以将其设置为空字符串。
请注意,第一行末尾的反斜杠根本不需要,因为 (..)
括号已经形成了一个逻辑行。
就个人而言,我会在此处使用 str.format()
method 作为字符串模板;它是一种将值插入字符串的更灵活、更强大的方法:
print('You entered {:.1f}" which converts into '
'{:.2f}m.'.format(imp_height_flt, imp_height_converted))
我还使用 单引号 来形成字符串文字,这样嵌入的 "
也不必使用反斜杠。
演示:
>>> imp_height_flt, imp_height_converted = 5.9, 1.8
>>> print("You entered %.1f\" which converts into "
... "%.2fm." % (imp_height_flt, imp_height_converted))
You entered 5.9" which converts into 1.80m.
>>> print("You entered ", imp_height_flt, "\" which converts into "
... "%.2f" % imp_height_converted, "m.",
... sep='')
You entered 5.9" which converts into 1.80m.
>>> print('You entered {:.1f}" which converts into '
... '{:.2f}m.'.format(imp_height_flt, imp_height_converted))
You entered 5.9" which converts into 1.80m.
您可以使用“+”运算符:
print("You entered " + str(imp_height_flt) + "\" which converts into " \
"%.2f" % imp_height_converted, "m.")
解决这个问题的最简单方法就是使用两种字符串格式。
print ("You entered %.2f\" which converts into %.2fm." % (imp_height_flt, imp_height_converted))
>>> imp_height_flt = 5.9
>>> imp_height_converted = 1.80134334
>>> print('You entered {}" which converts into {:.2f} m.'.format(imp_height_flt, imp_height_converted))
You entered 5.9" which converts into 1.80 m.
这不是转义问题。发生这种情况是因为您用逗号分隔了 print 的参数,它以块的形式写入标准输出并附加 space 而不是换行。
像这样:
import sys
args = ("Hello", "world", 123)
for x in args: sys.stdout.write(str(x)+" ")
为避免这种情况,您必须使用一个字符串而不是您使用的所有字符串。
使用“+”运算符将它们相加。之前将 ints 和 floats 转换为 str() ,一切都会好起来的:
print("You entered "+str(imp_height_flt)+("\" which converts into %.2f" % imp_height_converted)+" m.")
但更好的解决方案是使用这样的格式:
print("You entered %.2f\" which converts into %.2f m." % (imp_height_flt, imp_height_converted))
您甚至可以使用单引号避免转义:
print('You entered %.2f" which converts into %.2f m.' % (imp_height_flt, imp_height_converted))
其他答案有效(真正的问题是 print
的逗号分隔参数),但我还建议使用 format
进行格式化,因为 %
字符串格式有时会引起问题(并最终消失?):
https://docs.python.org/3.4/library/stdtypes.html#old-string-formatting
另请注意,您可以对格式字符串使用单引号 '
,这样就不必转义双引号 "
.
例如:
height_fmt = 'You entered {}" which converts into {:.2f}m.'
print(height_fmt.format(imp_height_flt, imp_height_converted))
输出为:
You entered 5.9" which converts into 1.80m.
有关 format
的所有有趣选项,请参阅:
https://docs.python.org/3.4/library/string.html#format-specification-mini-language
寻找一些关于文本格式的建议。我正在尝试打印一个简单的单位转换(英制到公制)的结果,但是在尝试打印双撇号符号时不断得到所有这些 spaces。
代码:
print("You entered ", imp_height_flt, "\" which converts into " \
"%.2f" % imp_height_converted, "m.")
当我 运行 我得到的程序:
You entered 5.9 " which converts into 1.80 m.
我正在尝试消除 9 和双撇号之间的 space。
对整个字符串使用格式:
print("You entered %.1f\" which converts into "
"%.2fm." % (imp_height_flt, imp_height_converted))
或者您可以告诉 print()
函数不要使用 spaces 作为分隔符:
print("You entered ", imp_height_flt, "\" which converts into "
"%.2f" % imp_height_converted, "m.",
sep='')
sep
参数的默认值是 ' '
,一个 space,但您可以将其设置为空字符串。
请注意,第一行末尾的反斜杠根本不需要,因为 (..)
括号已经形成了一个逻辑行。
就个人而言,我会在此处使用 str.format()
method 作为字符串模板;它是一种将值插入字符串的更灵活、更强大的方法:
print('You entered {:.1f}" which converts into '
'{:.2f}m.'.format(imp_height_flt, imp_height_converted))
我还使用 单引号 来形成字符串文字,这样嵌入的 "
也不必使用反斜杠。
演示:
>>> imp_height_flt, imp_height_converted = 5.9, 1.8
>>> print("You entered %.1f\" which converts into "
... "%.2fm." % (imp_height_flt, imp_height_converted))
You entered 5.9" which converts into 1.80m.
>>> print("You entered ", imp_height_flt, "\" which converts into "
... "%.2f" % imp_height_converted, "m.",
... sep='')
You entered 5.9" which converts into 1.80m.
>>> print('You entered {:.1f}" which converts into '
... '{:.2f}m.'.format(imp_height_flt, imp_height_converted))
You entered 5.9" which converts into 1.80m.
您可以使用“+”运算符:
print("You entered " + str(imp_height_flt) + "\" which converts into " \
"%.2f" % imp_height_converted, "m.")
解决这个问题的最简单方法就是使用两种字符串格式。
print ("You entered %.2f\" which converts into %.2fm." % (imp_height_flt, imp_height_converted))
>>> imp_height_flt = 5.9
>>> imp_height_converted = 1.80134334
>>> print('You entered {}" which converts into {:.2f} m.'.format(imp_height_flt, imp_height_converted))
You entered 5.9" which converts into 1.80 m.
这不是转义问题。发生这种情况是因为您用逗号分隔了 print 的参数,它以块的形式写入标准输出并附加 space 而不是换行。 像这样:
import sys
args = ("Hello", "world", 123)
for x in args: sys.stdout.write(str(x)+" ")
为避免这种情况,您必须使用一个字符串而不是您使用的所有字符串。 使用“+”运算符将它们相加。之前将 ints 和 floats 转换为 str() ,一切都会好起来的:
print("You entered "+str(imp_height_flt)+("\" which converts into %.2f" % imp_height_converted)+" m.")
但更好的解决方案是使用这样的格式:
print("You entered %.2f\" which converts into %.2f m." % (imp_height_flt, imp_height_converted))
您甚至可以使用单引号避免转义:
print('You entered %.2f" which converts into %.2f m.' % (imp_height_flt, imp_height_converted))
其他答案有效(真正的问题是 print
的逗号分隔参数),但我还建议使用 format
进行格式化,因为 %
字符串格式有时会引起问题(并最终消失?):
https://docs.python.org/3.4/library/stdtypes.html#old-string-formatting
另请注意,您可以对格式字符串使用单引号 '
,这样就不必转义双引号 "
.
例如:
height_fmt = 'You entered {}" which converts into {:.2f}m.'
print(height_fmt.format(imp_height_flt, imp_height_converted))
输出为:
You entered 5.9" which converts into 1.80m.
有关 format
的所有有趣选项,请参阅:
https://docs.python.org/3.4/library/string.html#format-specification-mini-language