欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Day_03 Python 字符串

程序员文章站 2022-07-14 18:49:40
...
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]