Python字符串

  1. 字符串创建

    z = 'python' # 或 z = "python"
    

    很多情况下单引号和双引号作用相同,但是一些情况还是存在微妙不同

    例如:使用一对双引号("")时,打印下面字符串无需转义字符(也就是\字符)

    print("i don't understand")
    

    输出结果:

    i don't understand
    

    使用一对单引号打印时,却需要添加转义字符 \

    print('i don\'t understand')
    

    输出结果:

    i don't understand
    

    如果遇到字符串偏长,一行展示不完全,需要展示为多行。一对三重单引号'''或三重"""就会派上用场,它们能轻松实现跨行输入

    print("""雪压枝头低 虽低不着泥 
            一朝红日出 依旧与天齐""")
    

    输出结果:

    雪压枝头低 虽低不着泥 
            一朝红日出 依旧与天齐
    
  2. 字符串与数字

数字n乘以字符串会克隆出n倍个原字符串

print(3*"p y t h o n")
print("p y t h o n"*3)

输出结果:

p y t h o n p y t h o n p y t h o n
p y t h o n p y t h o n p y t h o n

10乘以字符-会绘制出一条虚线

print(10*"-")

输出结果:

----------

2个字符串常量能直接结合,中间不用任何符号函数链接

print("py""thon")

输出结果:

python

单个字符还能与数值完成互转,内置函数ord转换单个字符为整型

print(ord('赵'))
print(ord('钱'))
print(ord('孙'))
print(ord('李'))

输出结果:

36213
38065
23385
26446

chr 函数转换整数为单个字符

print(chr(36213))
print(chr(38065))
print(chr(23385))
print(chr(26446))

输出结果:

赵
钱
孙
李
  1. 字符串打印及格式化

使用 format 函数,字符串变量使用一对花括号{}, format 参数中指定变量的取值

print("i am {0},age {1}".format("孙悟空",300))

输出结果:

i am 孙悟空,age 300

f 打印f 后面紧跟一个字符串,其中花括号{}中直接写出变量名称

name = '孙悟空'
age = 300
print(f'i am {name}, age {age}')

输出结果:

i am 孙悟空, age 300

控制字符串打印,保留小数点后两位

print("{:.2f}".format(3.1415926)) 

输出结果:

3.14

控制字符串打印,带符号保留小数点后两位

print("{:+.2f}".format(-1)) 

输出结果:

-1.00

控制字符串打印,不带小数位

print("{:.0f}".format(3.388))  # 不带小数位
print("{:.0f}".format(3.788))  # 代码会进行四舍五入

输出结果:

3
4

控制字符串打印, 整数补零,填充左边, 宽度为3

print("{:0>3d}".format(5)) # 整数补零,填充左边, 宽度为3

输出结果:

008

控制字符串打印,以逗号分隔的数字格式

print("{:,}".format(20482048)) # 以逗号分隔的数字格式

输出结果:

20,482,048

控制字符串打印,百分比格式

print("{:.2%}".format(0.888)) # 百分比格式

输出结果:

88.80%

控制字符串打印,指数记法

print("{:.2e}".format(369369369))  # 指数记法

输出结果:

3.69e+08
  1. 字符串处理操作

join 串联多个字符串,注意Python中没有单个字符这种类型,单个字符在Python中也会被当作str类型。如下连接多个字符串,最终打印出 Python

Chars = ['P', 'y', 't', 'h', 'o', 'n']
name = ''.join(Chars)
print(name)

输出结果:

Python

分割字符串,一般使用split函数,第一个参数指明分割字符串使用的分割符

x ='孙悟空,猪八戒,沙悟净'.split(",")
print(x)
#split 从左面开始分割

输出结果:

['孙悟空01', '猪八戒02', '沙悟净03']

split还有第二个参数指明需要做的分割次数,比如只做一次分割,得到如下两个元素

x ='孙悟空01,猪八戒02,沙悟净03'.split(",",1)
print(x)
#split 从左面开始分割

输出结果:

['孙悟空01', '猪八戒02,沙悟净03']

rsplit就是从右侧开始分割字符串,某些场景rsplit函数更好用一些

x ='孙悟空01,猪八戒02,沙悟净03'.rsplit(",",1)
print(x)

输出结果:

['孙悟空01,猪八戒02', '沙悟净03']

string.capitalize()把字符串的第一个字符大写

chr = "f,python "
chr1 = "a,python "
chr.capitalize()
chr1.capitalize()
print(chr.capitalize())
print(chr1.capitalize())

输出结果:

F,python 
A,python

string.center(width) 返回一个原字符串居中,并使用空格填充至长度 width 的新字符串

str = "孙悟空"
str.center(20, "*")
print(str.center(20,"*"))

输出结果:

********孙悟空*********

string.startswith(obj, start=0,end=len(string))

检查字符串是否是以 obj 开头,是则返回 True,否则返回 False。如果start和 end 指定值,则在指定范围内检查

str = "333333孙悟空猪八戒沙和尚88888888"
str1 = "333333孙悟空猪八戒沙和尚6666666"
print(str.startswith("8")) # 是不是以8开头 返回False
print(str.startswith("3")) # 以3开头返回True
print(str.startswith("3",0,9)) # 添加了查找范围在范围内返回True,否则返回False

输出结果:

False
True
True

str.endswith(ending[, start[, end]])方法用于判断字符串是否以指定后缀结尾,如果以指定后缀结尾返回True,否则返回False。可选参数"start"与"end"为检索字符串的开始与结束位置

str = "唐僧,孙悟空,猪八戒,沙悟净......西游团队"
ending = "西游团队"
print(len(str)) #查看字符串长度
print (str.endswith(ending)) #打印以什么结尾,如果找到返回True
print (str.endswith(ending,0,24))# 0,24表示从0索引到最后一个索引,匹配到返回True
print (str.endswith(ending,0,20))#开始和结束位置找不到就返回False

输出结果:

True
True
False

str.find() 方法检测字符串中是否包含子字符串 str ,可选参数"start"与"end"为检索字符串的开始与结束位置

str = "唐僧,孙悟空,猪八戒,沙悟净......西游团队"
str2 = "红孩儿"
str3 = "唐僧"
str4 = "猪八戒"
str5 = "西游团队"
print (str.find(str2))
print (str.find(str3))
print (str.find(str4))
print (str.find(str5,0,3))

输出结果:

-1 #找不到红孩儿这个字符串返回-1
0  #找到字符串返回对应的索引
7  #找到字符串返回对应的索引
-1 #添加了开始和结束位置,没有找到指定的字符串返回-1

str.isalnum()如果 str 至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 False

str = "theshy12345567"
str1 = "Theshy12345567"
str2 = "12345567"
str3 = "1,2 345567"
str4 = "唐僧孙悟空猪八戒沙悟净西游团队"
print("1",str.isalnum())
print("2",str1.isalnum())
print("3",str2.isalnum())
print("4",str3.isalnum())
print("5",str4.isalnum())

输出结果:

1 True #小写字母数字组合返回True
2 True #大写字母数字组合返回True
3 True #纯数字返回True
4 False# 虽然是纯数字,但是有符号和空格返回False
5 True #纯汉字也返回True

string.isalpha()如果 str 至少有一个字符并且所有字符都是字母则返回 True

str = "theshy12345567"
str1 = "Theshy12345567"
str2 = "12345567"
str3 = "1,2 345567"
str4 = "唐僧孙悟空猪八戒沙悟净西游团队"
str5 = "TheshyUzi"
print("1",str.isalpha())
print("2",str1.isalpha())
print("3",str2.isalpha())
print("4",str3.isalpha())
print("5",str4.isalpha())
print("6",str5.isalpha())

输出结果:

1 False
2 False
3 False
4 False
5 True #所有汉字返回True
6 True #大小写字母组合返回True

str.isdigit()如果 str只包含数字则返回 True 否则返回 False

str1 = "Theshy12345567"
str2 = "12345567"
str3 = "1,2 345567"
print("1",str1.isdigit())
print("2",str2.isdigit())
print("3",str3.isdigit())

输出结果:

1 False
2 True  #只有纯数字才会返回True
3 False

str.islower()如果 str中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False

str1 = "theshy12345567"
str2 = "12345567"
str3 = "1,2 345567"
str4 = "tHeshy12345567"
print("1",str1.islower())
print("2",str2.islower())
print("3",str3.islower())
print("4",str4.islower())

输出结果:

1 True # 可以是字母和数字,但字母必须小写
2 False
3 False
4 False 

str.isupper()如果 str 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False

str1 = "Theshy12345567"
str2 = "12345567"
str3 = "1,2 345567"
str4 = "THESHY1,2,3,4"
print("1",str1.isupper())
print("2",str2.isupper())
print("3",str3.isupper())
print("4",str4.isupper())

输出结果:

1 False
2 False
3 False
4 True # 必须都是大写返回True

str.upper()转换 str中的小写字母为大写

str1 = "Theshy12345567"
str2 = "12345567"
str3 = "1,2 345567"
str4 = "THESHY1,2,3,4"
print("1",str1.upper())
print("2",str2.upper())
print("3",str3.upper())
print("4",str4.upper())

输出结果:

1 THESHY12345567
2 12345567
3 1,2 345567
4 THESHY1,2,3,4

str.lower()转换 str中所有大写字符为小写

str1 = "Theshy12345567"
str2 = "12345567"
str3 = "唐僧孙悟空猪八戒沙悟净西游团队"
str4 = "THESHY1,2,3,4"
print("1",str1.lower())
print("2",str2.lower())
print("3",str3.lower())
print("4",str4.lower())

输出结果:

1 theshy12345567    #str中所有大写字符为小写
2 12345567            #数字不影响
3 唐僧孙悟空猪八戒沙悟净西游团队 #字符不影响
4 theshy1,2,3,4    #str中所有大写字符为小写

str.join(sequence)方法用于将序列中的元素以指定的字符连接生成一个新的字符串,元组、列表、字典后,可以用 join() 来转化为字符串 # 比较实用的方法

list=['1','2','3','4','5']
list1=["孙悟空","猪八戒","沙和尚"]
print(''.join(list))
print('--'.join(list1))

输出结果:

12345
孙悟空--猪八戒--沙和尚

str.lstrip()删除 str 左边的字符包括空格

str = "333333孙悟空猪八戒沙和尚   "
str1 = "333333孙悟空猪八戒沙和尚   "
print(str.lstrip("3"))
print(str1.lstrip())

输出结果:

孙悟空猪八戒沙和尚   
333333孙悟空猪八戒沙和尚 

string.rstrip()删除 str 字符串末尾的字符包括空格

str = "333333孙悟空猪八戒沙和尚88888888"
str1 = "333333孙悟空猪八戒沙和尚6666666"
print(str.rstrip("8"))
print(str1.rstrip("6"))

输出结果:

333333孙悟空猪八戒沙和尚
333333孙悟空猪八戒沙和尚

string.swapcase()翻转 str中的大小写

str = "THESHY,JACKLOVE"
str1 = "UZI,jacklove"
print(str.swapcase())
print(str1.swapcase())

输出结果:

theshy,jacklove
uzi,JACKLOVE

一行较长的字符串,将其转化为多行,每行只有10个字符

import textwrap
text ="神龟虽寿,犹有竟时;腾蛇乘雾,终为土灰。老骥伏枥,志在千里;烈士暮年,壮心不已。盈缩之期,不但在天;养怡之福,可得永年。幸甚至哉,歌以咏志。"
turtle = textwrap.fill(text,5)
print(turtle)

输出结果:

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