字符串方法 format

1.替换字段名

在最简单的情况下,只需向 format 提供要设置其格式的未命名参数,并在格式字符串中使用未命名字段。此时,将按顺序将字段和参数配对。你还可给参数指定名称,这种参数将被用于相应的替换字段中。你可混合使用这两种方法。

In [2]:
"{foo} {} {bar} {}".format(1, 2, bar=4, foo=3)
Out[2]:
'3 1 4 2'
 

还可通过索引来指定要在哪个字段中使用相应的未命名参数,这样可不按顺序使用未命名 参数。

In [3]:
"{foo} {1} {bar} {0}".format(1, 2, bar=4, foo=3)
Out[3]:
'3 2 4 1'
 

2.基本转换

指定要在字段中包含的值后,就可添加有关如何设置其格式的指令了。首先,可以提供一个 转换标志。

In [4]:
print("{pi!s} {pi!r} {pi!a}".format(pi="π"))
 
π 'π' '\u03c0'
 

上述三个标志( s 、 r 和 a )指定分别使用 str 、 repr 和 ascii 进行转换。函数 str 通常创建外观 普通的字符串版本(这里没有对输入字符串做任何处理)。函数 repr 尝试创建给定值的Python表 示(这里是一个字符串字面量)。函数 ascii 创建只包含ASCII字符的表示

 

你还可指定要转换的值是哪种类型,更准确地说,是要将其视为哪种类型。例如,你可能提 供一个整数,但将其作为小数进行处理。为此可在格式说明(即冒号后面)使用字符 f (表示定 点数)。

In [5]:
"The number is {num}".format(num=42)
Out[5]:
'The number is 42'
In [6]:
"The number is {num:f}".format(num=42)
Out[6]:
'The number is 42.000000'
 

你也可以将其作为二进制数进行处理。

In [7]:
"The number is {num:b}".format(num=42)
Out[7]:
'The number is 101010'

3.宽度、精度和千位分隔符

宽度是使用整数指定的,如下所示:

In [8]:
"{num:10}".format(num=3)
Out[8]:
'         3'
In [9]:
"{name:10}".format(name="Bob")
Out[9]:
'Bob       '
 

如你所见,数和字符串的对齐方式不同。对齐将在下一节介绍。

 

精度也是使用整数指定的,但需要在它前面加上一个表示小数点的句点。

In [11]:
"Pi day is {pi:.2f}".format(pi=3.14159)
Out[11]:
'Pi day is 3.14'
 

当然,可同时指定宽度和精度。

In [13]:
"{pi:10.2f}".format(pi=3.14159)
Out[13]:
'      3.14'
 

实际上,对于其他类型也可指定精度,但是这样做的情形不太常见。

In [14]:
"{:.5}".format("Guido van Rossum")
Out[14]:
'Guido'
 

最后,可使用逗号来指出你要添加千位分隔符。

In [15]:
'One googol is {:,}'.format(10 ** 100)
Out[15]:
'One googol is 10,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000'
 

4.符号、对齐和用 0 填充

有很多用于设置数字格式的机制,比如便于打印整齐的表格。在大多数情况下,只需指定宽 度和精度,但包含负数后,原本漂亮的输出可能不再漂亮。另外,正如你已看到的,字符串和数 的默认对齐方式不同。在一栏中同时包含字符串和数时,你可能想修改默认对齐方式。在指定宽 度和精度的数前面,可添加一个标志。这个标志可以是零、加号、减号或空格,其中零表示使用 0来填充数字。

In [17]:
'{:010.2f}'.format(3.14159)
Out[17]:
'0000003.14'
 

要指定左对齐、右对齐和居中,可分别使用 < 、 > 和 ^ 。

In [18]:
print('{0:<10.2f}\n{0:^10.2f}\n{0:>10.2f}'.format(3.14159))
 
3.14
3.14
3.14
 

可以使用填充字符来扩充对齐说明符,这样将使用指定的字符而不是默认的空格来填充。

In [4]:
"{:$^15}".format(" WIN BIG ")
Out[4]:
'$$$ WIN BIG $$$'
 

字符串格式设置示例

In [6]:
# Print a formatted price list with a given width

width = 35
# width = int(input('Please enter width: ')) price_width = 10
item_width = width - price_width header_fmt = '{{:{}}}{{:>{}}}'.format(item_width, price_width)
fmt = '{{:{}}}{{:>{}.2f}}'.format(item_width, price_width) print('=' * width) print(header_fmt.format('Item', 'Price')) print('-' * width) print(fmt.format('Apples', 0.4))
print(fmt.format('Pears', 0.5))
print(fmt.format('Cantaloupes', 1.92))
print(fmt.format('Dried Apricots (16 oz.)', 8))
print(fmt.format('Prunes (4 lbs.)', 12)) print('=' * width)
 
===================================
Item Price
-----------------------------------
Apples 0.40
Pears 0.50
Cantaloupes 1.92
Dried Apricots (16 oz.) 8.00
Prunes (4 lbs.) 12.00
===================================
 

字符串方法

1. center

方法 center 通过在两边添加填充字符(默认为空格)让字符串居中。

In [8]:
"The Middle by Jimmy Eat World".center(39)
Out[8]:
'     The Middle by Jimmy Eat World     '
In [9]:
"The Middle by Jimmy Eat World".center(39, "*")
Out[9]:
'*****The Middle by Jimmy Eat World*****'
 

2.find

方法find在字符串中查找子串。如果找到,就返回子串的第一个字符的索引,否则返回 - 1 。

In [11]:
'With a moo-moo here, and a moo-moo there'.find('moo')
Out[11]:
7
In [12]:
title = "Monty Python's Flying Circus"
title.find('Monty')
Out[12]:
0
In [13]:
title.find('Python')
Out[13]:
6
In [14]:
title.find('Zirquss')
Out[14]:
-1
In [16]:
subject = '$$$ Get rich now!!! $$$'
subject.find('$$$')
Out[16]:
0
In [17]:
subject.find('$$$', 1)  # 只指定了起点
Out[17]:
20
In [18]:
subject.find('!!!', 0, 16)  # 同时指定了起点和终点
Out[18]:
-1
 

3.join

join 是一个非常重要的字符串方法,其作用与 split 相反,用于合并序列的元素。

In [19]:
seq = [1, 2, 3, 4, 5]
ep = '+'
sep.join(seq) # 尝试合并一个数字列表
 
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-19-f3b632463406> in <module>
1 seq = [1, 2, 3, 4, 5]
2 ep = '+'
----> 3sep.join(seq) # 尝试合并一个数字列表 NameError: name 'sep' is not defined
In [20]:
seq = ['1', '2', '3', '4', '5']
ep.join(seq) # 合并一个字符串列表
Out[20]:
'1+2+3+4+5'
 

4.lower

方法 lower 返回字符串的小写版本。

In [21]:
'Trondheim Hammer Dance'.lower()
Out[21]:
'trondheim hammer dance'
 

5.replace

方法 replace 将指定子串都替换为另一个字符串,并返回替换后的结果。

In [22]:
'This is a test'.replace('is', 'eez')
Out[22]:
'Theez eez a test'
 

6.split

split 是一个非常重要的字符串方法,其作用与 join 相反,用于将字符串拆分为序列。

In [23]:
'1+2+3+4+5'.split('+')
Out[23]:
['1', '2', '3', '4', '5']
 

7.strip

方法 strip 将字符串开头和末尾的空白(但不包括中间的空白)删除,并返回删除后的结果。

In [25]:
' internal whitespace is kept '.strip()
Out[25]:
'internal whitespace is kept'

02python程序设计基础——字符串的更多相关文章

  1. C#程序设计基础——字符串

    C#字符串使用string关键字声明,且由一个或多个字符构成的一组字符. 串联字符串 串联字符串是将一个字符串追加到另一个字符串末尾的过程.使用“+”或“+=”运算符串链字符符文本或字符串常量.串联字 ...

  2. 谈谈书本《c#物联网程序设计基础》中的技术瑕疵,如果你将要读本书,请进来看看!

    今天去书店看到一本名为<c#物联网程序设计基础>的书,对物联网感兴趣的我抓起来就看,书中的项目都是上位机开发项目,较简单,如果物联网开发只是这样,看起来我做物联网开发也是绰绰有余.这边书我 ...

  3. C语言程序设计基础知识点概括

    C语言程序设计基础知识点概括 C语言程序设计基础知识点1.函数是C语言的基本构成单位.main函数是C语言程序的唯一入口.2.C语言程序开发过程. 编译过程:将以.c或.cpp结尾的源程序文件经过编译 ...

  4. 内存布局------c++程序设计基础、编程抽象与算法策略

    图中给出了在一个典型c++程序中如何组织内存的框架.程序中的指令(在底层都是按位存储的).全局变量.静态对象和只读常量往往被存储在静态去(static area)(第二个图中的数据段.代码段.值得注意 ...

  5. 程序设计基础·Java学习笔记·面向对象(下)

    Java程序设计基础之面向对象(下) (补充了上的一些遗漏的知识,同时加入了自己的笔记的ヾ(•ω•`)o) (至于为什么分P,啊大概是为了自己查笔记方便(?)应该是("` 3′") ...

  6. 程序设计基础·Java学习笔记·面向对象(上)

    Java程序设计基础之面向对象(上) (自适应学习进度而进行记录的笔记,希望有一些小小的用处吧(^∀^●)ノシ) (新人上路,望多指教,如有错误,望指正,万分感谢(o゚v゚)ノ) 目录 一.面向对象 ...

  7. C语言程序设计基础

    C语言程序设计基础 目录 C语言 C语言基础 C语言编程注意 C语言 C语言基础 C语言编程注意 0<9<9和0<9&&9<9是不同的 数组的声明和定义 con ...

  8. C#程序设计基础——常量

    C#程序设计基础——常量 常量是在编译时已知,并且在程序的生存期内不发生更改的不可变值.常量使用const修饰符进行声明. 常量必须在声明时初始化,且常量的类型必须为以下类型之一:sbyte/byte ...

  9. Oracle数据库之PL/SQL程序设计基础

    PL/SQL程序设计基础 一.PL/SQL块结构 前边我们已经介绍了PL/SQL块的结构,再来回顾一下: DECLARE /* * 声明部分——定义常量.变量.复杂数据类型.游标.用户自定义异常 */ ...

随机推荐

  1. redis的安装及使用总结

    Windows版本的安装 下载地址:https://www.jb51.net/softs/541181.html 安装过程 把压缩包内的文件解压到非中文目录即可 启动redis 启动redis要通过命 ...

  2. ACM ICPC 2011-2012 Northeastern European Regional Contest(NEERC)B Binary Encoding

    B: 现在有一种新的2进制表示法,要你求出0~m-1的每个数的表示. 规则如下:n 是满足 m<=2n 最小数. 而0~m-1的数只能够用n-1个位和n个位来表示. 对于n个位表示的数来说不能有 ...

  3. tp3.2 页面Windows正常 linux异常,页面找不到

    这个问题主要是tp3.2 在读取控制器里的方法时,会把方法自动转为小写, 然后去对应view成找html文件,自然找不到. class textController extends ComContro ...

  4. React Native商城项目实战01 - 初始化设置

    1.创建项目 $ react-native init BuyDemo 2.导入图片资源 安卓:把文件夹放到/android/app/src/main/res/目录下,如图: iOS: Xcode打开工 ...

  5. Word2Vec模型参数 详解

    用gensim函数库训练Word2Vec模型有很多配置参数.这里对gensim文档的Word2Vec函数的参数说明进行翻译,以便不时之需. class gensim.models.word2vec.W ...

  6. 一个蒟蒻的解题过程记录——洛谷P1003 铺地毯

    这到题算是我“火线回归”后码的第一道题,病好了心情不错,发篇博客分享一下 目录: ·题目描述 ·题目分析 ·解题思路 ·代码实现 ·总结 ·题目描述: 为了准备一场特殊的颁奖典礼,组织者在会场的一片矩 ...

  7. leetcode 437 Path Sum III 路径和

      相关问题:112 path sum /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNo ...

  8. Visual Studio Code - 插件

    Intellisense(代码提示.智能感应) Path Intellisense:路径别名(alias)代码提示 例如:在模块打包配置中配置@代替了src,可以使用下面的配置让@智能感应 " ...

  9. Delphi XE2 之 FireMonkey 入门(40) - 控件基础: TMemo

    Delphi XE2 之 FireMonkey 入门(40) - 控件基础: TMemo 值得注意的变化: 1.其父类 TScrollBox 的许多特性也很有用处, 如:   Memo1.UseSma ...

  10. 用configmap管理配置

    一.ConfigMap介绍管理配置: ConfigMap介绍 Secret 可以为 Pod 提供密码.Token.私钥等敏感数据:对于一些非敏感数据,比如应用的配置信息,则可以用 ConfigMap ...