Python基础总结(六)(更多字符串和特殊方法)

 Python中创建的不可变的对象(如int和str)创建出来后就不会再改变,为了性能优化,Python使用同一个对象来表示具有相同内容的字符串。例如创建两个相同的字符串变量:

>>> s1 = "test"

>>> s2 = "test"

>>> id(s1)

4337183936

>>> id(s2)

4337183936

可以看到s1和s2在内存中的标示id是同一个。

处理字符串的函数

len函数返回一个字符串中字符的个数

max函数返回字符串中的最大字符

min函数返回字符串中最小字符

字符串下标运算符:[]

字符串是一个字符序列,可以通过下标(从0开始)访问字符串中的一个字符:

s[index]

注意:1、s[-1] = s[-1 + len(s)],表示字符串的最后一个字符。2、字符串是不可变的,不能通过下标去尝试修改字符串中的一个字符。

字符串截取符:[Start: end]

截取从start到end-1部分的字符串,start为空表示0,end为空表示最后一个下标,如果start或end是负数,那么就用len(s)+负数来替换下标。如下例子:

>>> s = "welcome"

>>> s[: 6]

'welcom'

>>> s[3:]

'come'

>>> s[1:-1]   #等于s[1: -1+len(s)] = s[1: 6]

'elcom'

字符串连接符:+、字符串复制符:*

>>> s1="a"

>>> s2="b"

>>> s1+s2

'ab'

>>> 3*s1

'aaa'

字符串包含某个字符串判断:in、not in

>>> s = "welcome"

>>> "come" in s

True

>>> "come" not in s

False

比较字符串

可以使用==、!=、 >、 <、 >=、 <=来比较字符串,Python是比较字符串中从脚标0开始依次向右对应位置的字符进行大小比较的。

迭代字符串

字符串是可迭代的,这意味着可以使用for循环来遍历字符串中的每一个字符,例如:

for ch in s:

    print(ch)

或遍历奇数位

for i in range(0, len(s), 2):

    print(s[i])

测试字符串类型常用函数:

isalnum(): bool        #字符串中至少有一个字符,并且是字母和数字组成就返回true 

isalpha(): bool         #字符串中至少有一个字符,并且是字母组成就返回true

isdigit(): bool           #字符串只含有数字就返回true

isidentifier():bool    #字符串是Python标示符就返回true

islower(): bool         #字符串中至少有一个字符,并全是小写就返回true

isupper(): bool        #字符串中至少有一个字符,并全是大写就返回true

isspace(): bool        #字符串中只包含空格就返回true

搜索字符串:

endswith(s1: str): bool      #如果字符串以子串s1结尾则返回true

startswith(s1: str): bool     #如果字符串以子串s1开头则返回true

find(s1): int                         #返回s1在这个字符串的最低下标,如果不存在返回-1

rfind(s1): int                        #返回s1在这个字符串的最高下标,如果不存在返回-1

count(substring): int         #返回这个子串在字符串中出现的次数

转换字符串:

capitalize(): str  #返回大写首字母的字符串

lower(): str  #将字母都变成小写

upper(): str  #将字母都变成大写

title(): str  #大写每个单词的首字母

swapcase(): str  #将小写字母变成大写,大写字母变成小写

replace(old, new): str  #用新的字符串替代老的字符串

⚠️:这里的转换都是创建了一个新的字符串,因为字符串是不可变的。原来的字符串内容没有变化。

删除字符串两端的空格(包括‘’、\t、\f、\r、\n):

lstrip(): str   #去掉字符串前端的空白字符串

rstrip(): str  #去掉字符串后端的空白字符串

strip(): str  #去掉字符串两端的空白字符串

格式化字符串:

center(width): str  #返回在给定宽度上居中的字符串副本

ljust(width): str  #返回在给定宽度上居左的字符串副本

rjust(width): str  #返回在给定宽度上居右的字符串副本

运算符重载:

Python中的运算符重载思想比较简单,你只需要在你需要重载的地方重写和运算符对应的方法即可。这里提供和运算符对应的方法:

⚠️方法前后都是双下划线

__init__ 构造函数 对象建立:X = Class(args)

__del__ 析构函数 X对象收回

__add__ 运算符+ 如果没有_iadd_,X+Y,X+=Y

__or__ 运算符|(位OR) 如果没有_ior_,X|Y,X|=Y

__repr__,__str__ 打印、转换 print(X)、repr(X),str(X)

__call__ 函数调用 X(*args,**kargs)

__getattr__ 点号运算 X.undefined

__setattr__ 属性赋值语句 X.any = value

__delattr__ 属性删除 del X.any

__getattribute__ 属性获取 X.any

__getitem__ 索引运算 X[key],X[i:j],没__iter__时的for循环和其他迭代器

__setitem__ 索引赋值语句 X[key] = value,X[i:j] = sequence

__delitem__ 索引和分片删除 del X[key],del X[i:j]

__len__ 长度 len(X),如果没有__bool__,真值测试

__bool__ 布尔测试 bool(X),真测试

__lt__,__gt__, 特定的比较 X < Y,X > Y

__le__,__ge__, X<=Y,X >= Y

__eq__,__ne__ X == Y,X != Y

__radd__ 右侧加法 Other+X

__iadd__ 实地(增强的)加法 X += Y (or else __add__)

__iter__,__next__ 迭代环境 I = iter(X),next(I)

__contains__ 成员关系测试 item in X (任何可迭代的)

__index__ 整数值 hex(X),bin(X),oct(X),O[X],O[X:]

__enter__,__exit__ 环境管理器 with obj as var:

__get__,__set__ 描述符属性 X.attr,X.attr = value,del X.attr

__new__ 创建 在__init__之前创建对象

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

推荐阅读更多精彩内容