Python字符串

字符串

1.程序中需要加上双引号或者双引号来表示字符串

2.字符串可以存放任意数量的字符,无法修改的数据容器

字符串运算:

加法:多个字符串按照次序合并为一个字符串

在实际使用的时候,数字和字符串的加法通常需要将数字的类型转换成str

乘法:1个字符串乘以n,可以得到n个复制的字符串

例子:输入一个字符,使用该字符打印一个3层的金字塔

x=input(':')
print("  "+x)
print(" "+x+x+x)
print(x+x+x+x+x)
x=input(':')
print(" "*2+x)
print(" "+x*3)
print(x*5)

字符串截取

(1)len(字符串):统计字符串内的字符个数,中文也是一个字一个长度

my_str = "itCSDN and itlove"
num = len(my_str)
print(f"字符串{my_str}的长度是:{num}")
>>>最后的结果是:17

(2)字符串[下标]:根据下标索引取出特特定的位置字符

str = "mountain and sea"
str1 = str[3]
str2 = str[-2]
print(f"从字符串{str}取下标为3的元素,值是{str1},取下标为-2的元素,值是{str2}")
\>>>最后的结果是:从字符串‘mountain and sea’取下标为3的元素,值是n,取下标为-2的元素,值是e)

(3)字符串[m:n:i]:语法:序列[起始下标:结束下标:步长],起始下标可以留空,留空意味着从头开始,结束下标(不含)表示何处结束,可以留空,留空视为截取到结尾,步长表示依次取元素的间隔,步长为N意味着每次跳过n-1个元素进行取,步长为负数则意味着要反向取(起始下标和结束下标也要反向标记),此操作不会影响序列本身,会得到一个新的序列(元组,字符串,列表)

s1=str1[1:6:2](16,不含6)
s2=str1[2:]#从下标2开始一直到最后
 my _ str ="12345"
 new _ str = my _ str [::-1]#从头(最后)开始,到尾结束,步长﹣1(倒序)
 print ( new _ str )
#结果:"54321"

字符串检索

字符串支持判断子串是否存在,子串出现次数,子串出现的位置

str1=‘abcdefg’

(1)子串 in 字符串:子串在字符串中,返回True,否则返回False

f1='cd' in str1  #结果是True
f2='cd' not in str2  #结果是False

(2)(1)字符串.count(子串,起点,终点):统计字符串内某字符的出现次数

my_str = "itCSDN and itlove"
count = my_str.count("it")
print(f"字符串{my_str}中it出现的次数是:{count}")
\>>>最后的结果是:2

(3)字符串.find(子串,起点,终点):返回子串首次出现的下标位置,不包含则返回-1

n=str1.find('d')  #3

(4)字符串.index(子串,起点,终点):查找给定字符的第一个匹配项的下标

str = "mountain and sea"

value = str.index("and")

print(f"在字符串{str}中查找“and”,其起始下标是{value}")

\>>>在字符串’mountain and seea’中查找“and”,其起始下标是9")#空格也算一个占位

字符串转换

字符串可以分解为列表,转换大小写,替换字串

(1)list.(字符串):把字符串按照元素依次分割,生成一个元素均为字符串的列表

l=list('abcd')  #’a','b','c','d'

(2)字符串.split(字符串):(1)按照给定字符串,对字符串进行分隔,不会修改原来字符串,而是得到一个新的列表

my_str = "hello python itCSDN itlove"
my_str_list = my_str.split(" ")
print(f"将字符串{my_str}进行split切分后得到:{my_str_list}, 类型是:{type(my_str_list)}")
>>>结果是:[‘hello’,’python’,’itCSDN’,’itlove’]
L='a-b-c-d'.split('-') #结果是['a','b','c','d']
L='a-b-c- '.split('-') #结果是['a','b''c',' ']#最后多了一个空串
  • 按照括号里的进行切割

(3)字符串.join(列表):使用字符串把列表中的元素链接为一个新的字符串(元素要么是字符串,要是是列表,列表元素也是字符串)

S=-.join('abc')  #a-b-c
K=#’.join['1','2','3']#1#2#3

join和split经常一起使用

(4)字符串.lower():字符串中的元素大写转成小写

S=‘AbCdE'.lower()  #abcde

(5)字符串.upper():字符串中的元素小写转成大写

S=‘AbCdE'.lower()  #ABCDE

(6)字符串.replace(要替换的1,替换字串2,替换字数):将字符串内的全部字符串1替换成字符串2(不修改字符串,得到一个新的字符串)

str = "itmountain and itsea"
new_str = str.replace("it","程序")
print(f"将字符串 {str},进行替换得到 {new_str}")
\>>>程序mountain and 程序sea
S='abcdef'.replace('ab','cd',2)  #cccdef

字符串中没有直接使用下表修改的方法,要修改元素,只能使用replace

(7)字符串.strip()或者字符串.strip(字符串):移除首位的空格和换行符或者指定字符串字符串.strip():不传入参数时,去除首尾空格

my_str = " itCSDN and itlove "

new_my_str = my_str.strip() # 不传入参数,去除首尾空格

print(f"字符串{my_str}被strip后,结果:{new_my_str}")

>>>最后的结果是‘itCSDN and itlove’

字符串.strip(字符串)

my_str = “12itCSDN and itlove21”

new_my_str = my_str.strip(“12”)#传入的是12,其实是1和2都会移除,是按照单个字符1和2导入的

print(f"字符串{my_str}被strip(‘12’)后,结果:{new_my_str}")

>>>结果是itCSDN and itlove

字符串的格式化

字符串可以按照自定义的格式进行连接:通常有三种方式

1.百分号:

S1=’今天是%d月%d日'%(5,1)

2.format

s1='{},{}!'. format (' Hello ',' World ')
#默认位置,结果是' Hello , World !'
S2='{0},{0},{1}!'. format (' Hi ',' World ')#指定位置,结果是Hihi,World!
S3=' PI ={:.2f}'. format (3.141,3.151)
#默认位置,保留2位小数,结果' PI =3.14'
s4=' PI ={1:.2f}'. format (3.141,3.151)#指定位置,保留2位小数,结果' PI =3.15'

3.f’{变量}‘

x='PI'
v=3.1415926
s=f'{x}={v:.2f}

字符串对齐

s=‘{0:<10}{1:>5}’.format(‘x’,‘y’)

0位置变量x,左对齐(<),最小宽度10

1位置变量y,右对齐(>),最小宽度5

结果是‘x1234567891234y’

字符串遍历

while遍历:

s=’abcdef'
i=0
while i

for-in遍历

s=‘abcdef'
for c in s:
    print(c,end='#')

字符串属性

如何判断字符串整体或者是单个字符元素是字母,数字还是其他字符呢

isalpha(是不是全是字母)

isdigit(是不是全是数字)

单个字符判断:’a’<=c<=‘z’or’A’<=c<=‘Z’ ‘0’<=c<=‘9’


写在最后:后续会更新字符串的相关习题,希望大家批评指正

你可能感兴趣的:(python,开发语言)