Day_03 Python 字符串

1.字符串

字符串:使用单引号或双引号括起来的字符集就是字符串,引号中单独的符号、数字、字母、空格等叫字符。

例:'123' 'as231' '安安' "hello world!"

1.1 字符串换行

使用\n或\r为字符串内容换行

print("hello\nworld!\rpython")

hello
world!
python
[Finished in 0.3s]
1.2 转义字符

用来表示一些有特殊功能或是特殊意义的字符(通过在固定的字符前加'\')
使用转义字符输出"

print("hello\"world!")

hello"world!
[Finished in 0.2s]

注意:转义字符在计算字符串长度时候,转义字符代表一个字符。

1.3 制表符

使用制表符\t为输出前加空白

print("\thello world!")

    hello world!
[Finished in 0.2s]

1.4 Python中阻止转义

Python中可以通过在字符串前加r或R来阻止转义

print(r'\\')
print(R'\'')

\\
\'
[Finished in 0.2s]

注意:Python中字符串中的字符是Unicode编码,Unicode编码使用16位对一个字节进行编码,ASCII编码使用8位对一个字节编码。编码的目的是让字符可以存储在计算机中。Unicode包含ASCII,可以表示世界上所有的符号和语言。

1.5 字符与Unicode编码的转换

获取字符的Unicode编码
语法:ord('字符') hex()函数为获取它的16进制表示

print(hex(ord('世')),hex(ord('界')))

0x4e16 0x754c
[Finished in 0.2s]

将Unicode编码转换为字符
chr(编码值)

print(chr(1))

�
[Finished in 0.3s]

print(chr(0x4eff))

仿
[Finished in 0.3s]
Python中的字符,实质是一个有序的字符序列
1.6获取字符串长度

长度:字符串中字符个数。len()函数是获取序列长度的内置函数
语法:len(字符串)

count = len('abc\n123')
print(count)
print(len('sadad'))

7
5
[Finished in 0.2s]
1.7 获取单个字符

通过下表获取字符串序列里面的字符元素。字符串中每个字符都对应一个索引。通过索引值来获取固定的字符。

str1 = 'abc'
print(str1[0])

a
[Finished in 0.3s]

获取p:
str2 = 'good good study\nday day up'
print(str2[-1])
print(str2[25])
print(str2[len(str2)-1])
print(str2[-2])

p
p
p
u
[Finished in 0.2s]

下标范围:0 - 字符串长度-1,负数表示倒数。例: -1 倒数第一个,-2:倒数第二个
负数范围:-1 ~ - 字符串长度
获取字符的时候,索引值不能超过索引的范围,否则会报IndexError

1.8 获取指定范围字符

语法:字符串[开始下标:结束下标]-->截取从开始下标到结束下标的字符
截取字符串操作有5种情况。

注意:截取操作包含开始下标,不包含结束下标

注意:开始下标对应的字符,要在结束下标对应的字符前面。
第一种开始下标与结束下标都存在
截取操作:

str1= 'abcd123'
print(str1[1:4])
print(str1[-6:-3])

bcd
bcd
[Finished in 0.1s]

注意:选择的范围为正数a:b时,表示截取操作从下标a开始到b结束(包含下标a的元素,但不包含下标b的元素);当选择范围为负数-a:-b时,表示截取的范围是从倒数第a位的下标开始到倒数第b位的下标结束(包含a下标元素,不包含b下标元素)。

第二种开始下标省略

开始下标省略:从字符串的最前面取到结束下标前。

str1= 'abcd123'
print(str1[:5])

abcd1
[Finished in 0.3s]

注意:截取同样不包括结束下标元素。

第三种结束下标省略

从开始位置获取到字符串结束

str1= 'abcd123'
print(str1[3:])

d123
[Finished in 0.2s]

第四种开始结束下标都省略

获取整个字符串;相当于直接输出

str1= 'abcd123'
print(str1[:])

abcd123
[Finished in 0.2s]

第五种步进获取

步进:设置截取字符串按照一定规则进行(步进操作类似于等差数列)
语法:str[begin:end:count] 其中str代表字符串,begin代表截取字符串的开始下标,end表示截取字符串的结束下标,count表示步进值(begin,end,count都可同时为空)。

注意:步进操作表示截取按步进值进行等差数列截取。例str1='abcd123',则操作str1[0:7:2]表示截取字符串str1从下标0-7按下标进行等差为2的截取操作。结果为ac13

str1= 'abcd123'
print(str1[0:7:2])

ac13
[Finished in 0.3s]

注意:当步进值为负数,表示下标按步进等减。
例:这里结果为31c是因为结束下标0的元素a不算。

str1= 'abcd123'
print(str1[7:0:-2])

31c
[Finished in 0.2s]
字符串运算
2.1 字符串拼接

语法: 字符串1 + 字符串2

str1 = 'hello'
str2 = ' world!'
str3 = str1+str2
print(str3)
print(str1+str2)


hello world!
hello world!
[Finished in 0.2s]

注意:做 + 运算必须保证 + 两边数据类型一致。例:不能是一个数字 + 一个字符串

2.2 字符串乘

语法:字符串 * 整数数字 ;功能:重复多少次

str1 = 'hello'
str2 =str1 * 2
print(str2)
str3 = 'a'
print(str3*6)

hellohello
aaaaaa
[Finished in 0.2s]
2.3 in

语法:字符串1 in 字符串2; 功能:判断字符串1是否在字符串2中,返回值为布尔型
语法:字符串1 not in 字符串2 ; 功能:判断字符串1不在字符串2中

result = 'aa' in 'aabcc'
print(result) 

str1 = 'aa'
str2 = 'abc'

print(str1 in str2)
result = 'ad' not in 'aa'
print(result)

True
False
True
[Finished in 0.2s]

2.4 格式字符串

语法:'占位符1占位符2'%(值1,值2)
%s ---> 字符串占位符
%d ---> 整数占位符
%f ---> 浮点数占位符
%c ---> 长度为1的字符串占位符(字符占位符),可以是一个字符,也可以是字符的编码值
%.nf ---> 使用n值限制小数点后面的位数(默认6位小数)

例:%s--->字符串占位符

str1 = 'abc%sef%s'%('d','g')
str2 = 'abc%s'%('d')
print(str1)
print(

abcdefg
abcd
[Finished in 0.2s]

例:%d--->整数占位符

str1 = '123%d56%d'%(4,7)
str2 = '1234%d56'%(-4)
print(str1)
print(str2)


1234567
1234-456
[Finished in 0.2s]

%f--->浮点数占位符

str1 = '1%f+2%f'%(4.5,9.7)
str2 = '2%f'%(4.5)
print(str1)
print(str2)

14.500000+29.700000
24.500000
[Finished in 0.2s]

注意:浮点数这里涉及到一个精度问题,如何去取想要的精度?

浮点数精度取值:在%f之间加一个.n,n表示你想要精确的位数。如果不加,则默认为6位小数。

str1 = '1%.1f+2%.2f'%(4.5,9.7)
str2 = '2%.3f'%(4.5)
print(str1)
print(str2)

14.5+29.70
24.500
[Finished in 0.3s]

%c--->字符占位符

str1 = 'abc123%c'%('d')
print(str1)

abc123d
[Finished in 0.3s]

注意:%c字符占位符与%s字符串占位符区别于前者只能表示一个字符,后者可以表示字符串。

组合使用

str1 = 'a%se%c1%d+%.2f'%('bcd','f',23,12.6)
print(str1)

abcdef123+12.60
[Finished in 0.2s]
2.5 格式化输出

输出规范

name = 'aa'
age = 18
print('%s今年%d岁'%(name,age))
3 字符串操作
3.1 capitalize()方法

capitalize()方法的功能是:将字符串的第一个字母变成大写
语法:str.capitalize()

str1 = 'abc'
print(str1.capitalize())


Abc
[Finished in 0.2s]
3.2 center()方法

center()方法的功能是:返回一个指定的宽度 width 居中的字符串,fillchar 为填充的字符,默认为空格。

语法:str.center(width,fillchar)

str1 = 'abc'
print(str1.center(5,'*'))

*abc*
[Finished in 0.2s]
3.3 count()方法

count()方法功能:统计字符串里某个字符出现的次数。可选参数为在字符串搜索的开始与结束位置。
语法:str.count('c')

str1 = 'aaaabc'
print(str1.count('a'))

4
[Finished in 0.3s]
3.4 endswith()方法

endswith()方法功能:判断字符串是否以指定后缀结尾,如果以指定后缀结尾返回True,否则返回False。

str1 = 'abcd123'
print(str1.endswith('a'))

False
[Finished in 0.2s]
3.5 find()方法

find()方法功能:检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,如果指定范围内如果包含指定索引值,返回的是索引值在字符串中的起始位置。如果不包含索引值,返回-1。

str1 = 'abcd123'
str2 = 'bc'
print(str1.find(str2))
print(str1.find(str2,0))
print(str1.find(str2,3))

1
1
-1
[Finished in 0.2s]
3.6 index()方法

index()方法功能:与find()方法一样,只是指定范围没找到子字符串会报错。

str1 = 'abcd123'
str2 = 'bc'
print(str1.index(str2))
print(str1.index(str2,0))
print(str1.index(str2,3))

1
1
Traceback (most recent call last):
  File "test.py", line 8, in <module>
    print (str1.index(str2, 3))
ValueError: substring not found
3.7 isalnum()方法

isalnum()方法:检测字符串是否由字母和数字组成。

str2 = 'abc123'
str3 = 'abc*d1'
print(str2.isalnum())
print(str3.isalnum())

True
False
[Finished in 0.3s]
3.8 isalpha()

isalpha()方法:检测字符串是否只由字母组成

str1 = 'runoob'
str2 = 'hello world good'
print(str1.isalpha())
print(str2.isalpha())

True
False
[Finished in 0.3s]
3.8 isdigit()方法

isdigit()方法:检测字符串是否只包含字符

str1 = '12345'
str2 = '123abc'
print(str1.isdigit())
print(str2.isdigit())

True
False
[Finished in 0.2s]
3.9 islower()

islower()方法:检测字符串中字符是否都为小写

str1 = 'abcd'
str2 = 'Abcd'
print(str1.islower())
print(str2.islower())

True
False
[Finished in 0.2s]
3.10 lower()

lower()方法功能:将字符串全部小写

str1 = 'Abcd'
print(str1.lower())

abcd
[Finished in 0.2s]
3.11 isspace()

isspace()方法:检测字符串是否只为空

str1 = '    '
str2 = '            '
print(str1.isspace())
print(str2.isspace())

True
True
[Finished in 0.3s]

注意:tab键也会当成空格

3.12 istitle()

istitle()方法:判断字符串是否为title:单词首字母大写

str1 = 'Hello World'
str2 = 'hello world'
print(str1.istitle())
print(str2.istitle())

True
False
[Finished in 0.3s]
3.13 title()

title()方法:将字符串转换为标题格式

str1 = 'hello world'
print(str1.title())

Hello World
[Finished in 0.2s]
3.14 isupper()

isupper()方法:判断字符串字符是否大写

str1 = 'hello world'
print(str1.isupper())

False
[Finished in 0.2s]
3.15 upper()

upper()方法:将字符串转换为大写

str1 = 'hello world'
print(str1.upper())

HELLO WORLD
[Finished in 0.2s]
3.16 join()

join()方法:将序列中的元素以指定的字符连接生成一个新的字符串

str1 = '-'
str2 = '*'
str3 = ('a','b','c','d')
print(str1.join(str3))
print(str2.join(str3))

a-b-c-d
a*b*c*d
[Finished in 0.2s]
3.17 len()

len()方法:返回字符串长度

str1 = 'abcde'
print(len(str1))

5
[Finished in 0.2s]
3.18 ljust()

ljust()方法:返回一个原字符串左对齐,并使用空格填充至指定长度的新字符串。如果指定的长度小于原字符串的长度则返回原字符串。

str1 = 'abcd'
print(str1.ljust(7))
print(str1.ljust(0))

abcd   
abcd
[Finished in 0.2s]
3.19 lstrip()

lstrip()方法:截掉字符串左边的空格或指定字符。

str1 = 'abcd     '
print(str1.lstrip())
print(str1.lstrip('a'))

abcd     
bcd     
[Finished in 0.2s]
3.20 max(str)

max(str)方法:返回字符串中最大字符

str1 = 'abcd'
print(max(str1))

d
[Finished in 0.2s]
3.21 min(str)

min(str)方法:返回字符串中最下字符

str1 = 'abcd'
print(min(str1))

a
[Finished in 0.2s]
3.22 replace()

replace()方法功能:把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次。

str1 = 'abcd1232ab'
print(str1.replace('abc','qre'))
print(str1.replace('2','6',1))

qred1232ab
abcd1632ab
[Finished in 0.3s]
3.23 rfind()

rfind()方法:类似find()方法,区别在于从右边查找
语法:str.rfind(str,begin,end)

str1 = 'abcd123'
print(str1.rfind('23',2,7))
print(str1.rfind('23',2,6))

5
-1
[Finished in 0.2s]
3.24 rindex()

rindex()方法:类似index,区别在于从右边
语法:str.rindex(str,begin,end)

str1 = 'abcd123'
print(str1.rindex('23',2,7))
print(str1.rindex('23',2,6))

5
ValueError: substring not found
3.25 rjust()

rjust()方法: 返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串。如果指定的长度小于字符串的长度则返回原字符串。
语法:str.rjust(width,fillchar)

str1 = 'aaa'
print(str1.rjust(7,'*'))

****aaa
[Finished in 0.3s]
3.26 rstrip()

rstrip()方法: 删除 string 字符串末尾的指定字符(默认为空格).

str1 = '123aaa'
print(str1.rstrip())
print(str1.rstrip('aaa'))

123aaa
123
[Finished in 0.2s]
3.27 split()

split(0方法:指定分隔符对字符串进行切片,如果参数num 有指定值,则仅分隔 num 个子字符串
语法:str.split(str, num)

str1 = 'abcd1234'
str2 = 'abcdac12c32'
print(str1.split('1'))
print(str2.split('c',3))

['abcd', '234']
['ab', 'da', '12', '32']
[Finished in 0.3s]
3.28 startswith()

startswith()方法:判断字符串以什么开头

str1 = 'abcd1234'
print(str1.startswith('a'))
print(str1.startswith('b'))

True
False
[Finished in 0.2s]
3.29 swapcase()

swapcase()方法:将字符串中大写转小写,小写转大写

str1 = 'Abc12anc'
print(str1.swapcase())

aBC12ANC
[Finished in 0.2s]
3.30 zfill()

zfill()方法:返回指定长度的字符串,原字符串右对齐,前面填充0

str1 = 'abcd123'
print(str1.zfill(10))

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

推荐阅读更多精彩内容