序列类型-字符串操作

序列类型共同的运算及函数.png

字符串是一个任意Unicode字符序列,包括中文等。可以用三种定界符:单引号、双引号、三引号,但是字符串的首末都得用一样的定界符,如:″ABout″,′123′。三引号用于表示跨行的字符串,如程序的跨行注释。
要访问字符串中单独的某个字符,用这个字符在字符串中的位置(索引),即这个字符离首字符的偏移量,注意首字符的位置为0,运算采用方括号[],方括号中表达式即为索引,也称为下标。字符串的索引有两种方式:一种是从0开始,向右依次递增序号,另一种是从-1开始,向左依次递减序号,如图1所示。因此访问字符′A′的可用反向递减的索引方式:ft[-5]


字符串索引方式

如果要访问字符串中的一个子串,则可以采用区间访问的方式,也可称为分片操作:[M:N],其中M和N为字符串的索引号,表示从M到N(不包括N)的子串,可以采用混合的索引方式,即一个使用递增的索引顺序,另一个采用递减的索引顺序。如果缺省M或N,则分别默认为字符串的开始或结尾的索引号。
字符串(str)是一个类,封装了一系列的方法来处理更为复杂的文本处理任务的函数,这些封装在类中的函数称为方法,所以说方法就是和特定对象相关联的函数。对于方法的调用方式是:a.b(),表示调用对象a的方法b()。每个字符串均是一个对象,表2列出了部分常用的字符串方法。


字符串方法

*注:字符串可以有列表的下标访问str[0],以及切片str[1:3]、反转str[::-1]

字符串的拼接

Python使用+来合并两个字符串,这种合并字符串的方法叫做拼接。其基本语法如下:

result_string = source_string1 + source_string2

其中,

  • source_string1为待合并的第一个字符串
  • source_string2为待合并的第二个字符串
  • result_string为合并后的字符串
# coding=utf-8
# 将姓氏和名字分别保存在两个变量中
first_name = 'Zhang'
last_name = 'san'
# 将姓氏和名字拼接,将结果存储在full_name变量中
full_name = first_name + " " + last_name
print(full_name)

输出结果: Zhang san

[字符串长度获取]、 [大小写转换]、[去除字符串首尾空格]

Python标准库提供了一系列关于字符串处理的函数。本关的小目标是让读者学习并掌握Python常用字符串方法中的len()lower()strip()函数的用法并完成相应字符串处理任务。

求字符串的长度

Python提供了len()函数来计算并返回字符串的长度,即字符串中单个元素的个数。其基本语法如下:

length = len(target_string)

大小写转换

Python提供了upper()lower()方法来对字符串进行大小写转换。其中,upper()会将字符串中的所有字符都转换为大写,lower()则将所有字符转换为小写。

除此之外,Python还贴心的提供了title()方法将字符串所有单词的首字母变成大写,而其他字母依然小写

# 将源字符串转换为大写并存入upper_string变量
upper_string = source_string.upper()
# 将源字符串转换为小写并存入lower_string变量
lower_string = source_string.lower()
# 将源字符串每个词首字母转换为大写并存入title_string变量
title_string = source_string.title()

  • 注意: 由上述打印结果可以看出,上述方法的调用并不会对原始的say_hello字符串产生影响,转换后的字符串会存入新的变量中.

去除字符串首尾空格

蟒了提供strip()方法,可以去除字符串两侧(不包含内部)全部的空格;使用该方法,也可以通过指定参数,去除两侧指定的特定字符

  • 注意:在指定参数时,如果参数是多个字符,则该方法会将多个字符逐个去比对进行删除(区分大小写),直到首尾两侧没有匹配的字符为止但是,该方法对字符串中间的字符没有影响。

其基本语法如下:

strip_string1 = source_string.strip()
string_strip2 = source_string.strip(target_char)

其中,

  • source_string:待处理的源字符串
  • strip_string1和strip_string2:处理后的字符串
  • target_char:需要从源字符串首尾去除的特定字符
    具体使用示例如下:
# coding = utf-8
# 创建一个字符串hello_world
hello_world = '  **The world ** is big!*    '
# 利用strip()方法处理hello_world字符串
blank_hello_world = hello_world.strip()
char_hello_world = hello_world.strip('TH *')
# 打印输出转换后的字符串
print(blank_hello_world)
print(char_hello_world)

输出结果:
**The world ** is big!*
he world ** is big!
输出结果分析:

  • 从第一行打印结果可以看到,strip()方法去除了源字符串首尾的所有空格,但是并没有去除字符串中间的空格
  • 从第二行打印结构可以看出,strip()方法将源字符串首尾所有空格,*以及字符T。去掉了。而字符串源中头部的h因为的英文小写并没有去除

字符串查找

Python中提供了内置的字符串查找方法find(),利用该方法可以在一个较长的字符串中查找子字符串。如果该字符串中有一个或者多个子字符串,则该方法返回第一个子串所在位置的最左端索引;若没有找到符合条件的子串,则返回-1。
find()方法的基本使用语法如下:

source_string.find(sub_string)

其中,

  • source_string:源字符串
  • sub_string:待查的目标子字符串
  • find:字符串查找方法的语法关键字
    例如,在一个字符串中查找两个单词的位置:
# coding=utf-8
# 创建一个字符串
source_string = 'The past is gone and static'
# 查看"past"在source_string字符串中的位置
print(source_string.find('past'))
# 查看"love"在source_string字符串中的位置
print(source_string.find('love'))

输出结果:
4
-1

index()方法:

python 的index方法是在字符串里查找子串第一次出现的位置,类似字符串的find方法,不过比find方法更好的是,如果查找不到子串,会抛出异常,而不是返回-1

info = 'abca'
print info.index('a')
print info.index('33')

rfindrindex方法用法和上面一样,只是从字符串的末尾开始查找。

字符串替换

蟒蛇了提供replace()方法,用以替换给定字符串中的子串,其基本使用语法如下:

source_string.replace(old_string, new_string)

其中,

  • source_string:待处理的源字符串
  • old_string:被替换的旧字符串
  • new_string:替换的新字符串
  • replace:字符串替换方法的语法关键词
    例如,如下在字符串中用small子串替换big子串
# coding = utf-8
# 创建一个字符串circle
source_string = 'The world is big'
# 利用replace()方法用子串"small"代替子串"big"
print(source_string.replace('big','small'))

输出结果:
The world is small

字符串分割

蟒了提供split()方法实现字符串分割。该方法根据提供的分隔符将一个字符串分割为字符列表,如果不提供分隔符则程序会默认把空格(制表,换行等)作为分隔符。其基本使用语法如下:

source_string.split(separator)

其中,

  • source_string:待处理的源字符串
  • separator:分隔符
  • split:字符串分割方法的关键词
    例如,用+,/还有空格作为分隔符分割字符串。
# coding = utf-8
# 待处理字符串source_string
source_string = '1+2+3+4+5'
# 利用split()方法,按照`+`和`/`对source_string字符串进行分割
print(source_string.split('+'))
print(source_string.split('/'))

输出结果:
['1', '2', '3', '4', '5']
['1+2+3+4+5']

count()方法

Python count()方法用于统计字符串里某个字符出现的次数。可选参数为在字符串搜索的开始与结束位置。
语法
count()方法语法:

str.count(sub, start= 0,end=len(string))

参数

  • sub -- 搜索的子字符串
  • start -- 字符串开始搜索的位置。默认为第一个字符,第一个字符索引值为0。
  • end -- 字符串中结束搜索的位置。字符中第一个字符的索引为 0。默认为字符串的最后一个位置。

返回值
该方法返回子字符串在字符串中出现的次数。
实例
以下实例展示了count()方法的实例:

实例(Python 2.0+)
#!/usr/bin/python
 
str = "this is string example....wow!!!";
 
sub = "I";
print "str.count(sub, 4, 40) : ", str.count(sub, 4, 40)
sub = "wow";
print "str.count(sub) : ", str.count(sub)

以上实例输出结果如下:
str.count(sub, 4, 40) : 2
str.count(sub) : 1

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,743评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,296评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,285评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,485评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,581评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,821评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,960评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,719评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,186评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,516评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,650评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,329评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,936评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,757评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,991评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,370评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,527评论 2 349