字符串

字符串的创建

str1 = "hello world"
str2 = 'hello'

格式化字符串

  • 字符串拼接(字符串不能和其他类型拼接)
    • " + "拼接
str1 = "abc"
str2 = "ef"
res = str1 + str2
print(res)
str1 = 123
str2 = "ab"
print(str1 + str2)
  • 格式化字符串:
str1 = "hello"
str2 = "world"
print(f"{str1}{str2}")
print(f"res = {str1} {str2}")
  • %s:表示任意字符串
print("hello %s" %'world')
print("a = %s" %"123")
print("a = ", 10)
image.png
  • format()函数:‘{}’.format()
#指定位置赋值
a = "{var2} {var1}".format(var1 = "123", var2 = "zmm")
print(a)
image.png

字符串常用的方法

方法名 作用 返回值
capitalize() 将字符串第一个字符转成大写 转换后的字符串
center(width, char) 返回以char填充的width居中的字符串,填充在字符串的左右,加上填充的字符,总字符串长度为width 填充后的字符串:String的len是奇数,会向最右边添加,偶数反之,width小于 len时,返回原始字符串
ljust(width, char) 用char来填充字符串,填充width个字符 返回新的字符串,若width小于等于原字符串长度,则返回原字符串
[count(var, beg= 0,end=len(string)) 统计var在str中出现的次数 次数
upper() 将字符串转成大写 转化之后的字符串
lower() 字符串转小写 转后的字符串
isupper() 判断字符串是否是大写 False or True
islower() 判断字符串是否为小写 False or True
isdigit() 判断字符串是否是数字字符串 False or True
len(str) 计算字符串的长度 长度
split(var1,width) 以var1将字符串切分成width+1个 字符串数组
rsplit(var1, width) 从右往左用var1将字符串分成width+1个 返回字符串数组
spiltlines([keepends]) 按照行('\r', '\r\n', \n')分隔,若keepends为True,则保留符号,反之不保留 返回字符串数组
strip(var) 删除字符串左右空格,或者指定var,默认(var不填时)删除空格 新的字符串
rstrip(var) 删除字符串最右边空格,或者指定字符var,var不填时默认删除空格 返回新的字符串
lstrip(var) 删除字符串最左边空格,或者指定字符var,默认删除空格 返回新的字符串
replace(old, new,替换次数) 用new来替换old,替换指定次数次 返回替换后的新字符串
startswith(substring, start, end) 检查字符串是否以指定字符开头 True or False
endswith(substring, start,end) 检查字符串是否以指定字符结尾 Ture or False
find(var, start,end) 在字符串中查找指定var 返回str所在的下标,反之,返回-1
rfind(var, start, end) 从右往左查指定var 返回下标,反正,返回-1
index(str, start,end) 在字符串中查找指定str 返回所在的下标,反之,报异常
encode(encoding = "utf-8",error = "strict") 指定字符串以utf-8的编码方式,编码,默认报error:ValueError 返回具体的编码值
bytes.decode(encoding="UTF-8", error = "strict") 指定以utf-8方式解码,默认报ValueError异常 返回具体的解码结果
expandtabs(tabsize=8) 把字符串中的tab制表符转换成空格,默认是转化个数是8 返回转换后的字符串
isalpha() 判断字符串中所有的字符是否是字母或者汉字 True or False
isalnum() 判断字符串中所有的字符是否是字母或者数字 True or False
isnumeric() 判断字符串是否全是数字 True or False
isspace() 判断字符串是否全是空格组成 True or False
istitle() 判断字符串中所有单词的首字母是不是大写 True or False
title() 把字符串转成title格式 返回转化后的字符串
isdecimal() 判断字符串是否只包含十进制数字 True or Fasle
  • center(width, char):返回一个指定的宽度 width 居中的字符串,char 为填充的字符,默认为空格
"""
center(width,char):返回以char填充的width居中的字符串,填充在字符串的左右,加上填充的字符,总字符串长度为width
width宽度值小于等于字符串的len时,返回字符串
String的len是奇数,会向最右边添加,偶数反之
"""
print("zmm".center(1, "1"))
print("zmm".center(4, "*"))
print("zm".center(3, "0"))
print("zmm".center(5, "*"))
image.png
  • ljust(width, char):用width个char在str后边填充,若width小于等于len(str)则返回原字符串,反之返回新字符串
str1 = "hello"
print(str1.ljust(1, "*"))
print(str1.ljust(5, "m"))
print(str1.ljust(7, "-"))
  • zifll(width):默认以0在str的前边填充,返回总长度为width的字符串,若width小于len(str),则返回原字符串
str2 = "hello,zmm"
print(str2.zfill(10))
print(str2.zfill(5))
  • count():计算某个字符在字符串中出现的次数
print("AMMM".count("M"))
print("zammma".count('a', 0, 3))
  • upper():字符串大写转成小写
print("big".upper())
image.png
  • lower():字符串转小写
print("MORE".lower())
  • isupper():判断字符串是否为大写
print("BIg".isupper())
  • islower():判断字符串是否为小写
print("MORE".islower())
  • isdigit():判断字符串是否是数字字符串
print("123".isdigit())
  • len():判断字符串的长度
str1 = "zmm"
print(len(str1))
  • split(var1,width):以var1来切分字符串,将字符串切成width + 1个(width可以不填),返回字符串数组,注意的是:以指定字符切分的时候,指定字符在字符串的个数,小于要切分的width,此时按照字符串中该字符出现的次数切分
"""
split(切割的字符,切割的份数)
"""

str1 = "hello zmm"
print(str1.split(" ", 2))
#空字符只有一个,所以最多只能切割2部分,当切割份数为3时,返回结果还是按照所切割字符的个数切的结果
print(str1.split(" ", 3))
print(str1.split("l", 3))
  • rsplit(var, width):从右边以var来分割字符串str,将str分割成width + 1个字符串
"""
rsplit(切割的字符, 切割的份数)
"""
str1 = "hello\n\rzmm\n......***\n\nr"
print(str1.rsplit("o"))
print(str1.rsplit("l"))
print(str1.rsplit("l", 1))
#l在字符串中只有两个,所以最多能切三部分,当切割的部分个数为4时候,还是只能切三部分
print(str1.rsplit("l", 4))
print(str1.rsplit("l", 3))
  • splitlines(True):按照行('\r', '\r\n', \n')分隔,参数为True时,保留\n
"""
splitlines(True):按照\n, \r\n, \r切分字符串,参数为True保留切割的符号
"""
str1 = "hello\n\rzmm\r\ntrr\n\no\r"
#保留切割的符号
print(str1.splitlines(True))
#切割的符号在字符串前面,则返回''
print(str1.splitlines())
#默认是False,按照切割符合切割
print(str1.splitlines(False))
  • strip(var):删除字符串左右空格或者指定字符;var不填时默认是删除左右空格
"""
strip(var):删除字符串左右的空格,或者指定var,返回新的字符串
"""
str1 = ",hello ,"
#返回字符串的地址不一致,说明是返回新的字符串
print(id(str1))
print(id(str1.strip()))

#删除字符串左右空格
str2 = " hello world "
print(str2.strip())
print(str2.strip(" "))

#删除字符串左右逗号
str3 = ",hello,world,"
print(str3.strip(","))

#删除字符串左右字符h
str4 = "hello zmmh"
print(str4.strip("h"))

str5 = ",hello "
#删除str5中的空格
print(str5.strip(" "))
#删除str5中的逗号
print(str5.strip(","))

#删除指定字符h
str6 = "hello"
print(str6.strip("h"))
  • rstrip(var):删除字符串最右边空格,或者指定var,默认删除空格,返回新字符串
"""
rstrip():删除字符串右边空格或者指定最右边指定字符,返回新的字符串
"""

str1 = ",hello,"
print(str1.rstrip(","))

str2 = " hello  m  "
print(str2.rstrip())

#字符最末尾不是以o结尾
str3 = "hllolom"
print(str3.rstrip("o"))

#字符串末尾只包含lo两个字符
str4 = "heolllolo"
print(str4.rstrip("lo"))

-lstrip():删除字符串最左边字符,或者最左边指定字符,返回新的字符串

"""
lstrip():删除左边空格,或者指定字符
"""
"""
lstrip():删除左边空格,或者指定字符
"""
str1 = " hello "
print(str1.lstrip())
print(str1.lstrip(" h"))
#O不是最左边开头的字符串,返回原字符串
print(str1.lstrip("o"))

  • repalce(old, new, times):用new替换old,替换times次,返回新的字符串
s = "ac, ,fb, ,b"

print(id(s))
s = s.replace(" ", "a", 1)
print(id(s))
  • startswith(var, start, end):判断字符串是否以指定var开头
str1 = "hello mm"
print(str1.startswith("h"))
print(str1.startswith("l", 4))
print(str1.startswith("o", 0, 5))
  • endswith(substring, start, end):判断字符串是否以指定字符结尾
print(str1.endswith("mm"))
print(str1.endswith("m", 0, len(str1)))
  • index(str, start,end):查找指定字符;
  • find(str, start, end):同上,唯一区别,find找不到返回-1,index会报错
str1 = "hello world"
print(str1.index("h"))
print(str1.index("o", 5, len(str1)))
#z字符串m不在str1中,报错
print(str1.index("m"))
str1 = "hello world"
print(str1.find("h", 0, 1))
print(str1.find("hel", 0, 1))

-rfind(var, start, end):从右往左查找var在字符串中的位置,返回下标,找不到测返回-1

str1 = "bcdAhHbb"
print(str1.rfind("H"))
print(str1.rfind("b", 0, 3))
print(str1.rfind("m", 0, len(str1)))
print(str1.rfind("bcd", 0, 3))
print(str1.rfind("bcd", 0, 2))
  • rindex(var,start, end):从右往左查询var所在字符串的位置,若不存在,报异常
str1 = "hello zmm"
print(str1.rindex("he", 0, len(str1)))
print(str1.rindex("m"))
print(str1.rindex("0", 6, len(str1)))
  • encode(encoding = "utf-8", error = "strict":设置字符串的编码方式,返回具体编码的结果(字符串为汉语文字时,返回的编码结果)
str1 = "hello"
str2 = "窗前"
str3 = "1234"
str4 = " - "
print(str1.encode("utf-8"))
print(str2.encode("utf-8"))
print(str3.encode("utf-8"))
print(str4.encode("utf-8"))
  • bytes.decode(encoding="utf-8", errors="strict"):以utf-8的编码方式进行解码(编码的结果作为bytes)
str1 = "hello"
str2 = "窗前"
str1_utf8 = str1.encode("utf-8")
str2_utf8 = str2.encode("utf8")
print(str1_utf8.decode("utf-8"))
print(str2_utf8.decode("utf-8"))
  • expandtabs(tabsize=8):将字符串中的\t转换成空格,tab 符号默认的空格数是 8 ,依次按照8的倍数填充
str1 = "he\tn"
print(str1.expandtabs())
print("he\tn".expandtabs(2))
print("he\tn".expandtabs(3))
print(str1.expandtabs(4))


str2 = "zmm\tn"
print(str2.expandtabs(3))
  • isalpha():判断字符串是否全是字符或者汉字组成
str1 = "he\tn"
print(str1.isalpha())
print("hell你".isalpha())
print("123h".isalpha())
  • isalnum():判断字符串是否全是字母或者数字
str3 = "hello\1"
print(str3.isalnum())
print('1233'.isalnum())
print("123abn".isalnum())
print("12 ab".isalnum())
  • isnumeric():判断字符串是否全是数字
print("1234".isnumeric())
print("1234 q".isnumeric())
  • isspace():判断字符串是否全是以空格组成
str3 = "   "
print(str3.isspace())
print("1234 ".isspace())
  • istitle():判断字符串中所有的首字母是否是大写,且其他字母是小写.
print("This is Pig".istitle())
print("this".istitle())
print("TH".istitle())
print("The 3".istitle())
print("1".istitle())
print("this is pig".title())
  • title():把字符串所有首字母转成大写
print("this is 1".title())
print("12".title())
print("12 is tile".title())
image.png
  • isdecimal():判断字符串是否只包含十进制数字,返回True or False
"""
isdecimal():判断字符串中是否只包含十进制数字,若包含返回true,反之返回False
"""
str1 = "12345"
print(str1.isdecimal())

str2 = "hh123"
print(str2.isdecimal())

str3 = "0010"
print(str3.isdecimal())

str4 = "0000"
print(str4.isdecimal())

str5 = "0x10"
print(str5.isdecimal())
  • maketrans(var1, var2):用var2替换var1的编码值,返回字典,常用translate():来转换成对应的新字符串
"""
maketrans(var1, var2):将字符串中的var1用var2替换,返回替换后的编码值,返回类型是字典,
常与translate()方法一起使用:返回编码转换后的结果
"""

str1 = "hello"
str2 = str1.maketrans("h", "l")
print(str2)
#translate():将maketrans的结果作为入参,将maketrans之前的字符串来调用
print(str1.translate(str2))

字符串常用的函数

方法名 作用 返回值
len(str) 计算str的长度 返回长度
"var".join(str) 以指定var连接str 返回连接后的字符串
max(str) 查询str中所有的字符的Unicode值,并返回最大的字符 返回查询结果
min(str) 查询str中所有字符的Unicode值,并返回最小的 返回查询结果
str(seq) 将seq转换成str 返回转换后的结果
type(seq) 查看seq的类型 返回具体的类型
id(seq) 查看seq的地址 返回具体地址
reversed() 反转字符串 返回反转后的地址
chr() 数字转成字母 返回数字转成对应ascii码的值
ord() 字母转成数字 返回字母转成的ascii码的值
reversed() 反转str 返回反转后的迭代器,常与"".join()方法进行解引用,从而返回结果
  • len():计算字符串的长度
print(len("hhh"))
image.png
  • "var".join():以指定var连接字符串
print(" ".join("hhh"))
print(" - ".join("zmm"))
print("m".join("helo"))
print("1".join("mm"))
  • min(str):寻找str中Unicode最小的字符并返回
str1 = "bcdAhH"
print(min(str1))
  • max(str):寻找str中Unicode最大的字符并返回
str1 = "bcdAhH"
print(max(str1))
  • reversed():反转字符串,返回反转后的地址:一般用"".join(reversed())解引用,此时返回具体结果
str2 = "hello zmm"
#更新字符串
print(str2[:6] + "xsk")

print(id(str2))
print(id("".join(reversed(str2))))
print(reversed(str2))
  • ord():把字符转成对应ascii的数字
image.png
  • chr():把数字转化成对应ascii的字母


  • reversed():反转字符串,返回反转后的迭代器,常用"".join()来解引用
s = "hello"
#反转前的地址
print(id(s))

reverse_s = reversed(s)
print(reverse_s)
#反转后的地址
print(id(reverse_s))

#反转后的结果
print("".join(reverse_s))

切片

  • 语法:
    str[start:end:步长]

str1 = "hello"

#从0切到最后,步长默认为1
print(str1[0::])
#反转字符串
print(str1[-1::-1])
#[0,3) 每隔两个切割字符串
print(str1[0:3:2])

#字符串拼接
print("zmm" + str1)

#取0号字符
print(str1[0])


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

推荐阅读更多精彩内容