每次使用Python的格式字符串(string formatter),2.7及以上版本的,我都会犯错,并且有生之年,我想我都理解不了它们的文档。我非常习惯于更老的%
方法。所以着手编写自己的格式字符串手册。若你有一些其他好的示例请告知我。
格式字符串手册
数字格式化
下面的表格展示了使用Python的后起新秀str.format()格式化数字的多种方法,包含浮点数格式化与整数格式化示例。可使用print("FORMAT".format(NUMBER));
来运行示例,因此你可以运行: print("{:.2f}".format(3.1415926));
来得到第一个示例的输出。
3.1415926 | {:.2f} | 3.14 | 保留小数点后两位 |
3.1415926 | {:+.2f} | +3.14 | 带符号保留小数点后两位 |
-1 | {:+.2f} | -1.00 | 带符号保留小数点后两位 |
2.71828 | {:.0f} | 3 | 不带小数 |
5 | {:0>2d} | 05 | 数字补零 (填充左边, 宽度为2) |
5 | {:x<4d} | 5xxx | 数字补x (填充右边, 宽度为4) |
10 | {:x<4d} | 10xx | 数字补x (填充右边, 宽度为4) |
1000000 | {:,} | 1,000,000 | 以逗号分隔的数字格式 |
0.25 | {:.2%} | 25.00% | 百分比格式 |
1000000000 | {:.2e} | 1.00e+09 | 指数记法 |
13 | {:10d} | 13 | 右对齐 (默认, 宽度为10) |
13 | {:<10d} | 13 | 左对齐 (宽度为10) |
13 | {:^10d} | 13 | 中间对齐 (宽度为10) |
string.format()基础
如下是两个基本字符串替换的示例,符号 {}
是替换变量的占位符。若没有指定格式,则直接将变量值作为字符串插入。
s1 = "so much depends upon {}".format("a red wheel barrow")
s2 = "glazed with {} water beside the {} chickens".format("rain", "white")
你也可以使用变量的位置数值,在字符串中改变它们,进行格式化时,会更加灵活。如果搞错了顺序,你可以轻易地修正而不需要打乱所有的变量。
s1 = " {0} is better than {1} ".format("emacs", "vim")
s2 = " {1} is better than {0} ".format("emacs", "vim")
更老的格式字符串符号"%"
Python2.6之前,格式字符串的使用方法相对更简单些,虽然其能够接收的参数数量有限制。这些方法在Python3.3中仍然有效,但已有含蓄的警告称将完全淘汰这些方法,目前还没有明确的时间进度表。[PEP-3101]
格式化浮点数:
pi = 3.14159
print(" pi = %1.2f ", % pi)
多个替换值
s1 = "cats"
s2 = "dogs"
s3 = " %s and %s living together" % (s1, s2)
没有足够的参数
使用老的格式化方法,我经常犯错"TypeError: not enough arguments for formating string",因为我数错了替换变量的数量,编写如下这样的代码很容易漏掉变量。
set = (%s, %s, %s, %s, %s, %s, %s, %s) " % (a,b,c,d,e,f,g,h,i)
对于新的Python格式字符串,可以使用编号的参数,这样你就不需要统计有多少个参数。
set = set = " ({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}) ".format(a,b,c,d,e,f,g)
更多.format()的格式字符串方法
format()函数提供了相当多的附加特性和功能,如下是一些有用的使用.format()的技巧。
命名参数
你可以将新的格式字符串用作模板引擎,使用命名参数,这样就不要求有严格的顺序。
madlib = " I {verb} the {object} off the {place} ".format(verb="took", object="cheese", place="table")
>>> I took the cheese off the table
多次复用同一个变量
使用%
格式字符串,要求变量有严格的次序,而.format()方法允许如上所示那样任意排列参数,也允许复用。
str = "Oh {0}, {0}! wherefore art thou {0}?".format("Romeo")
>>> Oh Romeo, Romeo! wherefore art thou Romeo?
将数值转换为不同的进制
可以使用如下字母来将数字转换成字母代表的进制,decimal,hex,octal, binary。
print("{0:d} - {0:x} - {0:o} - {0:b} ".format(21))
>>> 21 - 15 - 25 -10101
将格式作为函数来使用
可以将.format()用作函数,这就允许在代码中将普通文本和格式区分开来。例如,你可以在程序的开头包含所有需要使用的格式,然后在后面使用。这也是一种处理国际化的好方法,国际化不仅要求不同的文本,且常常要求不同的数字格式。
## 定义格式
email_f = "Your email address was {email}".format
### 在另一个地方使用
print(email_f(email="bob@example.com"))
感谢 earthboundkid在reddit上提供这一技巧。
其他技巧
转义大括号
使用str.format()时,若你需要使用大括号,只要写两次就可以了:
print(" The {} set is often represented as { {0} } ".format("empty"))
>>> The empty set is often represented as {0}
参考资料
- Python String Library - 标准库文档
转 http://blog.xiayf.cn/2013/01/26/python-string-format/
相关推荐
C语言字符串转换为Python字符串是指将C语言中的字符串数据转换为Python中的字符串对象,以便在Python环境中使用。下面详细介绍了C语言字符串转换为Python字符串的方法。 使用Py_BuildValue()构建字节对象 在Python...
| % | 格式字符串 | `print("我叫%s今年%d岁!" % ('小明', 10))` 输出结果:`我叫小明今年10岁!` | **示例代码**: ```python a = "Hello" b = "Python" print("a + b 输出结果:", a + b) print("a * 2 输出结果:...
python格式化各种形式的时间字符串,输出标准格式XXXX-XX-XX XX:XX:XX。
标签"Python 字符串 打印"暗示了这些文件涵盖了字符串的基本操作、格式化输出以及可能的高级用法,这些都是Python程序员必须掌握的基础技能。通过学习和实践这些内容,开发者能够更有效地处理文本数据,提高代码的...
在Python编程语言中,字符串是不可变的数据类型,但提供了丰富的操作方法来处理字符串。这里我们将深入探讨在Python 3.1版本中的字符串调用方法,包括大小写转换、输出对齐、检索、分割与组合以及字符串的更改。 1....
在Python编程语言中,字符串的格式化是一种常见且重要的任务,特别是在输出信息或者构建复杂的文本时。本主题将深入探讨如何使用字典进行字符串格式化,这是Python中一种灵活且强大的方式。 首先,我们来看看标题...
在Python编程语言中,字符串压缩是一个常见的操作,特别是在处理大量文本数据时,为了节省存储空间,我们会使用压缩算法。本节我们将深入探讨Python中的字符串压缩技术,并以标题"Python123之字符串压缩#134865"为...
字符串切片可以用来格式化文本输出,例如,提取对话中的特定句子或短语,或者将长文本分割成若干行显示。 4. 游戏数据序列化:游戏中的很多数据需要被序列化存储,比如玩家的分数、状态、关卡信息等。字符串切片...
这里python判断给定的字符串是否是一个有效的日期,如果是一个日期格式的字符串,该函数返回True,否则返回False def is_valid_date(str): '''判断是否是一个有效的日期字符串''' try: time.strptime(str, %Y-%m...
f-string,也称为格式化字符串字面值,是Python 3.6引入的一种新特性,用于方便地在字符串中嵌入表达式。它的主要优点是简洁且易于理解。在f-string中,我们用花括号{}包围要插入的表达式,并在前面加上字母f或F。...
3. **字符串格式化**:Python支持多种字符串格式化方式,如传统的`%`操作符,`str.format()`方法,以及现代的f-string。例如: ```python name = "Alice" age = 25 print("My name is %s, and I am %d years old...
在Python编程语言中,字符串是数据处理中非常重要的部分,特别是在文本分析和处理任务中。本教程将深入探讨三个关键的字符串方法:`split()`、`strip()` 和 `translate()`,这些都是Python中处理字符串时非常实用的...
6. 字符串的格式化:Python提供了多种字符串格式化方法,如使用%格式化、str.format方法或f-string(Python 3.6+)。 7. 正则表达式:Python的re模块提供了对正则表达式的支持,用于复杂的字符串匹配、查找、替换和...
"Python 字符串、内建函数" Python 字符串是 Python 中最常用的数据类型。我们可以使用引号('或")... Python 字符串运算符有多种操作符号, Python 字符串格式化可以将一个值插入到一个有字符串格式符 %s 的字符串中。
在Python编程中,插入变量到字符串中是一种常见的需求,用于构建动态文本。本文将深入探讨如何在Python字符串中插入变量,以及如何优雅地处理变量缺失的情况。 首先,Python没有直接支持在字符串中替换变量的语法,...
### Python3字符串学习教程 #### 引言 Python 作为一种流行的编程语言,其简洁明了的语法特性使得它成为初学者的理想选择。本教程重点介绍 Python3 中的字符串处理技术,帮助初学者掌握这一基本而重要的概念。字符...
Python支持多种字符串格式化方式,包括传统的`%`操作符,`str.format()`方法,以及现代的f-string(格式化字符串字面量)。 ```python # %操作符 name = 'Alice' age = 25 print('My name is %s and I am %d years ...
在Python编程中,字符串的格式化是一个基本且重要的知识点,它涉及到将数据以特定的格式嵌入到字符串中,用于输出或存储等操作。Python提供了多种字符串格式化的方法,其中最传统且应用广泛的是使用模运算符(%)...
自Python 1.6版本以来,这些方法不断得到增强和完善,直至Python 3.7,它们提供了丰富的功能,涵盖了字符串操作的各个方面,包括格式化、搜索、替换、编码与解码等。 首先,`capitalize()`方法用于将字符串的第一个...
本篇文章将深入探讨在"学学Python_字符串04_字符串方法01"这个主题中的关键知识点,包括基本字符串操作、格式化打印以及高级操作。 首先,我们要了解Python中的字符串是不可变的,这意味着一旦创建了一个字符串,就...