文章目录

  • 字符串
  • 字符串输入
  • 字符串拼接
  • 字符串操作
  • 字符串格式化
  • 访问字符串中的值
  • 字符串切片
  • 字符串遍历
  • 常用的字符串方法


字符串

字符串是 Python 中最常用的数据类型;一般以使用引号’ ‘," ",’’’ ‘’’(单、双、三引号)和等号“=”,进行字符串赋值。

str1 = '这是字符串'
str2 = "Life's short. I use python"
str3 = """
三引号里面内容也是一段字符串
三引号在函数里面的说明文档也用三引号来表示
"""

字符串输入

通过input()方法来接收用户输入的信息,input()方法默认输出的数据类型默认是字符串类型。

str4 = input('请输入你现在最想说的一句话:') # <class 'str'>
# 在这个世界上有很多是你很想做又没有去做的事情,但已经有人已经在做或是完成了的。
print(type(str4),{str4})
# 将数据转换成整型
age = int(input('你今年多大了呢?')) # <class 'int'>
print(f'{type(age)},你今年{age}岁了呀')

字符串拼接

每一个字符串,可以代表一段话、或者一个词组。这里提供两种方式来进行字符串拼接。

# 方式一 使用加号。要求:各个变量或者元素必须是字符串类型
agreement = 'http://'
ip = '101.02.09.33:9090'
url = '/achen/'
print(agreement + ip + url) # http://101.02.09.33:9090/achen/

# 方式二 格式化输出
print(f'完整的URL是:{agreement}{ip}{url}') # 完整的URL是:http://101.02.09.33:9090/achen/

字符串操作

字符串格式化

所谓的格式化输出就是按照一定的格式输出内容
目前为止,我所知道的,python格式化字符串有三种方法,第一是早期就有的%,其次是2.5之后的format(),还有就是3.6添加的f字符串调试

符号

描述

%

百分号,这个最早期的格式化符号,缺点是支持类型有限,只支持int,str,double;

{}.format(变量)

它使用普通函数调用语法(并因此支持多个参数),并且可以通过__format __()方法在被转换为字符串的对象上进行扩展。但str.format()又存在代码冗余的问题

f’{变量}’

f-string简洁易读,可以在字符串中包含Python表达式的值。包括lambda表达式(要放在括号里)

# 兹证明 xxx 自 xx 年 xx 月 xx 日入职,在我公司担任 xx 部门 xxxx 岗位
name = "诺诺子"
start_year = 2017
start_month = 5
start_day = 24
department_name = '测试管理'
job = '测试工程师'
print('兹证明 %s 自 %d 年 %d 月 %d 日入职,在我公司担任 %s 部门 %s 岗位' % (name,start_year,start_month,start_day,department_name,job))
print('兹证明 {} 自 {} 年 {} 月 {} 日入职,在我公司担任 {} 部门 {} 岗位'.format(name,start_year,start_month,start_day,department_name,job))
print(f'兹证明 {name} 自 {start_year} 年 {start_month} 月 {start_day} 日入职,在我公司担任 {department_name} 部门 {job} 岗位')

访问字符串中的值

通过使用方括号来截取字符串下标/索引来获取字符串中某个子串的值,使用变量名称[index],index下标顺着从0开始,逆着从-1开始。

str5 = 'abcdef12345'
print(f'str5字符串中第一个字符是:{str5[0]}') # a
print(f'str5字符串中最后一个字符是:{str5[-1]}') # 5

字符串切片

切片是指对操作的对象截取其中一部分的操作;字符串,列表,元组都支持切片
语法:字符串[开始位置下标:结束位置下标:步长]

  • [:]提取从开头(默认位置0)到结尾(默认位置-1)的整个字符串
  • [start:]从start提取到结尾
  • [:end]从开头提取到end-1
  • [start:end]从start提取到end-1
  • start🔚step]从start提取到end-1,每step个字符提取一个
  • [::-1]逆序
  • 选取的区间属于左闭右开型,即从"起始"位开始,到"结束"位的前一位结束(不包含结束位本身),
  • 如果不写步长默认是1;步长是控制方向的,正数从左往右取,负数是从右到左取
str5 = 'abcdef12345'

# str5[:6]冒号前不写表示从0开始,但不包含结束5的位置:
print(str5[:6]) # abcdef

# str5[6:]冒号后不写,表示从起始位置5到结尾
print(str5[6:]) # 12345

# 当方括号内有两个冒号,第一个冒号前后都没有,说明起始和开始是整个字符串,输出整个字符串
print(str5[::])  # abcdef12345
# 第二个冒号后跟的是步长,指的是切片时的间隔:str5[::2]
print(str5[::2])  # ace135

# 反向输出,将步长改为负数
print(str5[::-1])  # 54321fedcba

字符串遍历

通过循环遍历字符串,将字符逐个输出

str5 = 'abcdef12345'
for i in str5:
    print(i,end='\t')  # a	b	c	d	e	f	1	2	3	4	5

常用的字符串方法

方法

描述

语法

find()

检测某个字符串是否在某个字符串中,如果在,就返回子串开始位置的下标,否则,返回-1

字符串序列.find(子串,开始位置下标,结束位置下标);开始和结束位置下标可以省略,表示在整个字符串序列当中查找

replace()

replace不会修改原有字符串,而是生成了一个新的字符串

字符串序列.replace(旧子串,新子串,替换次数),replace默认全部替换; 替换次数如果超出子串出现的次数,则替换次数为该子串出现的次数

split()

按照指定字符分隔字符串

字符串序列.split(分割字符,num) num表示的是分隔字符出现的次数,即将来返回数据个数为num+1;默认以空格分割,分割后的结果得到一个列表

lower()

将字符串转成小写,不会改变原字符串,而是新生成一个字符串

字符串序列.lower()

upper()

将字符串转成大写,不会改变原字符串,而是新生成一个字符串

字符串序列.upper()

strip()

删除字符串两侧的空白字符

字符串序列.strip()

lstrip()

删除字符串左侧的空白字符

字符串序列.lstrip()

rstrip()

删除字符串右侧的空白字符

字符串序列.rstrip()

startswith()

检查字符串是否是以指定子串开头,是则返回True,否则返回False。如果设置开始和,结束位置下标,则在指定范围内检查

字符串序列.startswith(子串,开始位置下标,结束位置下标)

endswith()

检查字符串是否是以指定子串结尾,是则返回True,否则返回False。如果设置开始和结束位置下标,则在指定范围内检查

字符串序列.endswith(子串,开始位置下标, 结束位置下标)

isalpha()

如果字符串至少有一个字符并且所有的字符都是字母则返回True,否则返回False

字符串序列.isalpha()

isdigit()

:如果字符串只包含数字则返回True,否则返回False

字符串序列.isdigit()

isalnum()

如果字符串中至少有一个字符并且所有的字符是字母或者数字则返回True,否则返回False

字符串序列.isalnum()

isspace()

如果字符串中只包含空白,则返回True,否则返回False

字符串序列.isspace()

len()

统计字符串长度

len(字符串序列)

str5 = 'abcdef12345abcdef'
print(f'str5的字符长度为:{len(str5)}') # 17

# find()查找字符
print(f'5在字符串中出现的位置:{str5.find("f",1,8)}') # 5
print(f'6在字符串中出现的位置:{str5.find("6")}') # -1,字符串序列中不包含6
print(f'a在字符串中出现的位置:{str5.find("a")}') # 0 在整个字符串序列中查找a的位置 

# replace()替换字符
str6 = str5.replace('abc','ABC') # 不指定替换次数全部替换
str7 = str5.replace('abc','ABC',1) # 指定替换次数先替换前面的
print(str6,str7)

# split()分割字符
s = '大学、中庸、孟子、论语、诗经、尚书、礼记、周易、春秋'
print(f"以顿号将字符串分割:{s.split('、')}") # ['大学', '中庸', '孟子', '论语', '诗经', '尚书', '礼记', '周易', '春秋']
print(f'最大的分割次数,将字符串分割成两部分:{s.split("、",4)}') # ['大学', '中庸', '孟子', '论语', '诗经、尚书、礼记、周易、春秋']

# lower()转换为小写字符 
print(str6.lower()) # abcdef12345abcdef
# upper()转换为大写字符
print(str7.upper()) # ABCDEF12345ABCDEF

# strip()删除字符串空格
str8 = '  是阿陈呀 '
print(f'删除字符串两侧的空白字符:{str8.strip()}*') # 删除字符串两侧的空白字符:是阿陈呀*
print(f'删除字符串左侧的空白字符:{str8.lstrip()}*') # 删除字符串左侧的空白字符:是阿陈呀 *
print(f'删除字符串右侧的空白字符:{str8.rstrip()}*') # 删除字符串右侧的空白字符:  是阿陈呀*

str9 = '陈神恩'
filepath = 'c:/abc/dd/hhsh.doc'
# startswith()判断字符串是否以xxxx开头-姓氏
print(f"判断字符串是否以xxxx开头:{str9.startswith('陈')}") # True
# endswith()判断字符串是否以xxxx结尾-文件后缀
print(f"判断字符串是否以xxxx结尾:{filepath.endswith('doc')}") # True

str10 = 'abcdefg'
str11 = 'abcde12345'
str12 = '1234567'
str13 = ' '
# isalpha()判断字符串是否是一个纯字母的字符串
print(f'判断字符串是否是纯字母组成:{str10.isalpha()}') # True
print(f'判断字符串是否是纯字母组成:{str11.isalpha()}') # False

# isdigit()判断字符串是否是一个纯数字的字符串
print(f'判断字符串是否是纯数字组成:{str10.isdigit()}') # True
print(f'判断字符串是否是纯数字组成:{str12.isdigit()}') # False

# isalnum()判断字符串是否是包含数字、字母的字符串
print(f'判断字符串是否是包含数字、字母组成:{str10.isalnum()}') # True
print(f'判断字符串是否是包含数字、字母组成:{str11.isalnum()}') # True
print(f'判断字符串是否是包含数字、字母组成:{str12.isalnum()}') # True

# isspace(): 如果字符串中只包含空白,则返回True,否则返回False
print(f'判断字符串是否只包含空白:{str10.isspace()}') # False
print(f'判断字符串是否只包含空白:{str13.isspace()}') # True

每天记录一点点,每天进步一点点!!!