Python 2.6引入的str.format()
方法与现有%运算符的语法略有不同。哪个更好,什么情况下适合?
以下使用每种方法并具有相同的结果,那么有什么区别?
#!/usr/bin/python
sub1 = "python string!"
sub2 = "an arg"
a = "i am a %s" % sub1
b = "i am a {0}".format(sub1)
c = "with %(kwarg)s!" % {'kwarg':sub2}
d = "with {kwarg}!".format(kwarg=sub2)
print a # "i am a python string!"
print b # "i am a python string!"
print c # "with an arg!"
print d # "with an arg!"
此外,何时在Python中进行字符串格式化?例如,如果我的日志记录级别设置为HIGH
,那么执行以下%
操作是否还会对我有所帮助?如果是这样,有办法避免这种情况吗?
log.debug("some debug info: %s" % some_info)
第一个问题... .format
在许多方面似乎都更加复杂。一个令人烦恼的事情%
是它如何可以接受变量或元组。你会认为以下各项将始终有效:
"hi there %s" % name
但是,如果name碰巧(1, 2, 3
),它将抛出一个TypeError
。为了确保它始终打印,你需要执行
"hi there %s" % (name,) # supply the single argument as a single-item tuple
真丑。.format没有那些问题。同样在你给出的第二个示例中,该.format示例看起来更加简洁。
为什么不使用它?
第二个问题,字符串格式化与其他任何操作都同时发生-计算字符串格式化表达式时。而且,Python并不是一种惰性语言,它会在调用函数之前先对表达式求值,因此在你的log.debug
示例中,表达式"some debug info: %s"%some_info
首先求值为"some debug info: roflcopters are active"
,然后将该字符串传递给log.debug()。
主要内容:指定最小输出宽度,指定对齐方式,指定小数精度我们在《 第一个Python程序——在屏幕上输出文本》中讲到过 print() 函数的用法,这只是最简单最初级的形式,print() 还有很多高级的玩法,比如格式化输出,这就是本节要讲解的内容。 熟悉C语言 printf() 函数的读者能够轻而易举学会 Python print() 函数,它们是非常类似的。 print() 函数使用以 开头的转换说明符对各种类型的数据进行格式化输出,具体请看下表。
问题内容: 我正在开发一个应用程序,在其中执行一些请求以获取对象ID。在它们每个之后,我调用一个方法()将此id作为参数传递(请参见下面的代码)。 可以注意到,我正在将其转换为前缀并将其与前缀连接。但是,我知道我能做到这一点的多种其他方式(或者,例如),并在我的问题的结果:将超过字符串连接更好的可读性,代码约定和效率方面? 谢谢 问题答案: 这很容易成为基于意见的主题,但是我发现格式在大多数情况下
问题内容: 我正在尝试找到格式化sql查询字符串的最佳方法。在调试应用程序时,我想记录所有sql查询字符串的文件,并且正确格式化字符串很重要。 选项1 这对于打印sql字符串很有用。 如果字符串太长且不适合80个字符的标准宽度,则不是一个好的解决方案。 选项2 这里的代码很清楚,但是当您打印sql查询字符串时,会得到所有这些烦人的空格。 的u ‘\ n选取FIELD1,FIELD2,字段3,字段4
本文向大家介绍python字符串格式化方式解析,包括了python字符串格式化方式解析的使用技巧和注意事项,需要的朋友参考一下 1.%格式符 这种格式化并不是很好,因为它很冗长并且容易导致错误,比如没有正确显示元组或字典 2.str.format() 在处理多个参数和更长的字符串时仍然可能非常冗长 3.f-Strings f-strings 是指以 f 或 F 开头的字符串,其中以 {} 包含的表
问题内容: 我是Python新手,在格式化对象时遇到问题。 这是我要执行的操作:我有一个对象列表,并且该对象的类的成员之一是对象,它显示事件的持续时间。我想以小时:分钟的格式显示该持续时间。 我尝试了多种方法来执行此操作,但遇到了困难。我当前的方法是为返回小时和分钟的对象添加方法到类中。我可以将除以3600并四舍五入来获得小时数。我在获取剩余秒数并将其转换为分钟时遇到麻烦。 顺便说一下,我正在使用
问题内容: 有没有一种方法可以使用新的格式语法来格式化函数调用中的字符串?例如: 因此它在字符串 内部* 调用函数函数,而不是在格式化函数中作为参数。 * 编辑:这是另一个示例,可能会更好地显示我的挫败感,这就是我想要的: 这是我要避免的事情: 问题答案: Python 3.6添加了文字字符串插值,并以前缀编写。请参阅PEP 0498-文字字符串插值 。 这允许一个人写 应当注意,这些不是实际的字