这里会介绍如何使用字符串格式化其他的值,并了解一下利用字符串的分割,连接,搜索等方法能做些什么。

1.基本字符串操作

所有标准的序列操作(索引,分片,乘法,判断成员资格,求长度,取最大值和最小值)对字符串同样适用。但是要千万记住:字符串是不可变的。因此下面的分片赋值是不合法的:

>>> website = "www.python.org"
>>> website[-3:] = "com"
TypeError:object doesn't support slice assignment

2.字符串格式化:精简版

字符串格式化使用字符串格式化操作符,即百分号%来实现。

在%的左侧放置一个字符串,在右侧则放置希望格式化的值。可以使用一个值,如一个字符串或者数字,也可以使用多个值的元组或者字典。一般情况下使用元组:

>>> format = "hello,%s. %s enough for ya?"
>>> values = ("world","Hot")
>>> print format %values
hello world,Hot enough for ya?

3.字符串格式化:完整版

格式化操作符的右操作数可以是任何东西,如果是元组的话,则其中的每一个元素都会被单独格式化,每个值都需要一个对应的转换说明符。

注意:如果需要转换的元组作为转换表达式的一部分存在,那么必须将它用圆括号括起来,以避免出错。

>>> '%s plus %s equals %s'   %(1,1,2)
'1 plus 1 equals 2'

基本的转换说明符包括以下部分,注意:这些项的顺序是至关重要的。

(1)%字符:标记转换说明符的开始;

(2)转换标志(可选):-表示左对齐;+表示在转换值之前要加上正负号;“”(空白字符)表示整数之前保留空格;0表示转换值若位数不够则用0填充。

(3)最小字段宽度(可选):转换后的字符串至少应该具有该值指定的宽度。如果是*,则宽度会从值元组中读出。

(4)点(.)后跟精确度(可选):如果转换的是实数,精确度表示出现在小数点后的位数。如果转换的是字符串,那么该数字就表示最大字段宽度。如果是*,那么精度将会从元组中读出。

(5)转换类型

3.1 简单转换

只需要写出转换类型,使用起来很简单:

>>> "price of eggs: $%d"  % 42
'price of eggs:$42'

3.2 字段宽度和精度

字符宽度是转换后的值所保留的最小字符个数,精度对于数字转换来说,是结果中应该包含的小数位数,对字符串转换来说是转换后的值所能包含的最大字符个数。

可以使用*作为字段宽度或精度,此时数值会从元组参数中读出:

>>> '%5.*s' % (3,'hello')
' hel'

3.3 符号、对齐和0填充

在字段宽度和精度值之前还可放置一个“标表”,可以是零,加号,减号或空格。

>>> '010.2f' % pi
'0000003.14'
>>> print ('%+5d' % 10) + '\n' + ('%+5d' % -10)
+10
-10
>>> '%-10.2f' % pi
'2.14 '
>>> print('% 5d' % 10) + '\n' + ('% 5d' % -10)
10
-10

4.字符串方法

4.1 find

find方法可以在一个较长的字符串中查找子字符串。它返回子串所在位置的最左端索引,如果没有找到则返回-1.

>>> "with a moo-moo here".find('moo')
7
>>> title = "python 's flying"
>>> title.find(flying)
11

这个方法还可以接受可选的起始点和结束点参数。注意:由起始值和终止值指定的范围包含第一个指引,但不包含第二个索引。

>>>subject = "get rich now"
>>>subject.find('get',1)
-1
>>>subject.find('rich',2,8)
4

4.2 jion

jion方法是非常重要的字符串方法,它是split方法的逆方法,用来在队列中连接元素。

>>> seq = ['','','']
>>> j = '+'
>>> j.jion(seq)
'1+2+3'

注意:需要连接的队列元素必须都是字符串。

4.3 lower

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

>>> "THIS IS A CAT".lower()
'this is a cat'

4.4 replace

replace方法返回某字符串的所有匹配项均被替换后得到的字符串。(类似于“查找并替换”)

>>> 'this is a test'.replace('is','eez')
'theez eez a test'

4.5 split

这是一个非常重要的字符串方法,是jion的逆方法,用来将字符串分割成序列

>>> '1+2+3'.split('+')
['','','']

注意:如果不提供任何分隔符,程序会把所有空格作为分隔符(空格,制表,换行等)

4.6 strip

strip方法返回去除两侧(不包括内部)空格的字符串:

>>> " this is a cake      ".strip()
'this is a cake'

也可以指定需要去除的字符,将它们列为参数即可:

>>> "*** spam * for everyone!!!".strip('* !')
'spam * for everyone'

4.7 translate

translate方法和replace方法一样,可以替换字符串中的某些部分,但是和前者不同的是,translate方法只处理单个字符。它的优势在于可以同时进行多个替换,有时候比replace效率高得多。

在使用translate转换之前,需要先完成一张转换表。转换表中是以某字符替换某字符的对应关系。因为这个表有多达256个项目,我们还是不要自己写了,使用string模块里面的maketrans函数就行。

maketrans函数接收两个参数:两个等长的字符串,表示第一个字符串中的每个字符都用第二个字符串中相同位置的字符替换。

>>> from string import maketrans
>>> table = maketrans('cs','kz')
>>> 'this is an incredible test'.translate(table)
'thiz iz an inkredible tezt'

translate的第二个参数是可选的,这个参数是用来指定需要删除的字符的。如想要删除所有空格:

>>> 'this is an incredible test'.translate(table,' ')
'thizizaninkredibletezt'

python学习笔记之二:使用字符串的更多相关文章

  1. python学习笔记(二)— 字符串(string)

    字符串是 Python 中最常用的数据类型.我们可以使用引号('或")来创建字符串. 创建字符串很简单,只要为变量分配一个值即可.例如: var1 = 'Hello World!' var2 ...

  2. Python学习笔记(二)——列表

    Python学习笔记(二)--列表 Python中的列表可以存放任何数据类型 >>> list1 = ['Hello','this','is','GUN',123,['I','Lov ...

  3. Python学习笔记(二):条件控制语句与循环语句及常用函数的用法

    总结的内容: 1.条件控制语句 2.while循环语句 3.for循环语句 4.函数的用法 一.条件控制语句 1.介绍 Python条件语句是通过一条或多条语句的执行结果(True或者False)来决 ...

  4. 【Python学习笔记之二】浅谈Python的yield用法

    在上篇[Python学习笔记之一]Python关键字及其总结中我提到了yield,本篇文章我将会重点说明yield的用法 在介绍yield前有必要先说明下Python中的迭代器(iterator)和生 ...

  5. Python学习笔记(十二)—Python3中pip包管理工具的安装【转】

    本文转载自:https://blog.csdn.net/sinat_14849739/article/details/79101529 版权声明:本文为博主原创文章,未经博主允许不得转载. https ...

  6. JavaScript学习笔记(二)——字符串

    在学习廖雪峰前辈的JavaScript教程中,遇到了一些需要注意的点,因此作为学习笔记列出来,提醒自己注意! 如果大家有需要,欢迎访问前辈的博客https://www.liaoxuefeng.com/ ...

  7. python 学习笔记(十二) 文件和序列化

    python 文件读写和序列化学习.## python文件读写`1 打开并且读取文件` f = open('openfile.txt','r') print(f.read()) f.close() ` ...

  8. Python学习笔记(三)字符串类型及其操作(2)

    1.字符串的表示 字符串是字符的序列表示,可以由一对单引号(‘).双引号(“)或三引号(’‘’)构成.其中,单引号.双引号和三引号都可以表示单行字符串,但是只有三引号可以表示多行字符串 在使用双引号时 ...

  9. python学习笔记7(使用字符串)

    一.字符串格式化,在%左侧放置一个字符串,右侧放置希望格式化的值. >>> format = 'Hello,%s,%s enough for ya?' >>> va ...

  10. Python学习笔记(二)Python的数据类型和变量

    Python的字符串 Python使用''和""将字符串括起来,与ruby类似,特殊之处是Python可以使用r''表示''内部的字符串默认不转义,如: print(r'\\\t\ ...

随机推荐

  1. [51daifan]来吧,一起书写51daifan的成长史吧-让一部分人先安全起来

    对新创项目而言,是idea更重要,还是执行力更重要?在没有用户时,我们该如何冷启动?团队.人.技术.产品.推广和拜春哥,哪一个更重要?到底是什么决定了一个项目的生存或者毁灭? 来吧,一起书写51dai ...

  2. 基于raw os 的事件触发系统

    Raw os的事件触发系统有以下特点: 1 基于UML的状态机理念设计,实现了有限状态机(fsm)以及层次状态机(HSM). 2 实现了活动对象(ACTIVE OBJECT)的特性,一个活动对象包含了 ...

  3. (原创)(C#随笔)IEnumerable< ICollection < IList区别

    public interface IEnumerable { IEnumerator GetEnumerator(); } 再看ICollection<T> public interfac ...

  4. [破解]java打包Exe工具 - Jar2Exe Wizard

    打包java文件为exe的方法和软件有很多,还有一些开源的软件和一些免费的软件. 我用过的所有打包exe软件中,Jar2Exe Wizard是最好用的,但是只有一个月的试用期,需要的可以从官网下载. ...

  5. VC调试技巧

    Visual C++ 的 C 运行时刻函数库标识模板0xCD    已经分配的数据(alloCated Data)0xDD    已经释放的数据(Deleted Data)0xFD    被保护的数据 ...

  6. PhoneGap-----Contacts

    Everything in the code!!! <!DOCTYPE html> <html> <head> <title>Contact Examp ...

  7. hdu2647 逆拓扑,链式前向星。

    pid=2647">原文地址 题目分析 题意 老板发工资,可是要保证发的工资数满足每一个人的期望,比方A期望工资大于B,仅仅需比B多1元钱就可以.老板发的最低工资为888元.输出老板最 ...

  8. 浅析点对点(End-to-End)的场景文字识别(图片文字)

    一.背景 随着智能手机的广泛普及和移动互联网的迅速发展,通过手机等移动终端的摄像头获取.检索和分享资讯已经逐步成为一种生活方式.基于摄像头的 (Camera-based)的应用更加强调对拍摄场景的理解 ...

  9. Iron Foundry

    Iron Foundry Provided by Tier 3 Iron Foundry is a project initiated by the engineers of Tier 3, an e ...

  10. 主流JavaScript框架(Dojo、Google Closure、jQuery、Prototype、Mootools和YUI)的分析和对比

    本文主要选取了目前比较流行的JavaScript框架Dojo.Google Closure.jQuery.Prototype.Mootools和YUI进行对比,主要是根据网上的资料整理而成,希望可以供 ...