ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
[TOC] <br /> ## 一、字符串基础 **01 字符定义和使用** ``` # 1. ⾃定义变量 # 2. 在变量中存储相应字符串 val1 = "⿊⻢程序员软件测试" val2 = '⿊⻢程序员软件测试' print(val1) print(val2) ``` **02 字符串定义细节** * 单引号字符串 * 双引号字符串 * 三引号字符串 * 特殊符号处理 ``` # 1 单引号 val1 = '单引号软件测试' # 2 双引号 val2 = "双引号软件测试" # 3 三引号【也可以单双】 val3 = """三引号软件测试""" # 4 转⼊字符串的特殊符号 val4 = "I\'m itcastYY" # 5 去除特殊字符功能 val5 = r"I \' m itcastYY" ``` **03 字符串输入与输出** * 输入: 使用 input() 函数 * 输出: 使用 print(变量名) ``` # 输出 name = 'Tom' print('我的名字是' + name ) # 使⽤了 + 号来做拼接 # 输⼊ name = input("请输⼊⽤⼾名:") pwd = input("请输⼊密码") print(name, pwd) # ⼆者都为字符串类型 ``` **04 字符串下标访问** * 可以将字符串当做是装有很多内容的容器,通过编号可以获取到指定位置的字符 * 下标是人为定义的一种计数规则,默认下标从 0 开始 * 下标的使用语法为 字符串名\[下标值\] ``` # 下标获取对应位置上的字符 str1 = "夜晚来了我还依然睁着眼睛,是因为我看⻅了你留在⽉光下的痕迹" print(str1[0]) # 夜 print(str1[1]) # 晚 ``` <br /> ## 二、字符串切片 > 通过切片操作,可以获取字符串中指定部分的字符 **01 切片语法** ``` 字符串[开始位置下标:结束位置下标:步⻓] ``` **02 切片示例** ``` name = "abcdefg" print(name[2:5:1]) # cde print(name[2:5]) # cde print(name[:5]) # abcde print(name[1:]) # bcdefg print(name[:]) # abcdefg print(name[::2]) # aceg print(name[:-1]) # abcdef, 负1表⽰倒数第⼀⼀个数据print(name[-4:-1]) # def print(name[::-1]) # gfedcba ``` **03 注意** * 结束下标位置对应的字符不会被截取到【俗称顾头不顾尾】 * 下标,正负都可以,不表示大小,只表示开始方向 * 步长用于设置截取间隔,默认步长为1 <br /> ## 三、查找类工具方法 **01 find** * 功能 : 被查找字符是否存在于当前字符串中,如果存在则返加开始下标,不存在则返回 \- 1 * 语法: **字符串.find( 被查找字符,开始位置,结束位置 )** * 示例: ``` mystr = "如果你给我的,和你给别⼈的是⼀样的,那我就不要了" print(mystr.find('你')) # 22 print(mystr.find('你', 3, 20)) # 8 print(mystr.find('你我')) # -1 ``` > 注意: > 1. 开始位置和结束位置可以省略,表示从头找到尾 > 2. 如果被查找字符重复存在,则返回第一次出现位置的下标 > 3. 被查找字符如果不存在则返回 -1 **02 index** * 功能:被查找字符是否存在于当前字符串中,如果存在则返加开始下标,不存在则抛出错误异常 * 语法: **字符串.index(被查找字符,开始位置,结束位置)** * 示例: ``` mystr = "如果你给我的,和你给别⼈的是⼀样的,那我就不要了" print(mystr.index('你')) # 22 print(mystr.index('你', 3, 20)) # 8 print(mystr.index('你我')) # -1 ``` > 注意: > 1. 开始结束位置可以省略 > 2. 如果被查找字符不存在,则抛出异常,而非 -1 **03 count** * 功能: 统计被测字符出现的次数 * 语法: **字符串.count(被测试字符, 开始位置,结束位置)** * 示例: ``` mystr = "岁⽉极美,在于它必然的流逝。 春花、秋⽉、夏⽇、冬雪。" print(mystr.count('⽉')) # 2 print(mystr.count('软件测试')) # 0 print(mystr.count('⽉', 3, 20)) # 1 ``` <br /> ## 四、修改类字符串方法 **01 replace** * 功能:使用新的子串,按规则替换旧的字符串内容 * 语法: **字符串.replace( 原字符串, 新⼦串, 替换次数 )** * 示例: ``` str_val = "习近平主席我们称之为习⼤⼤,是受我们爱戴的伟⼈,⾦三胖同志被称之为世界最成功的80后" str_val = "习近平主席我们称之为习⼤⼤,是受我们爱戴的伟⼈,⾦三胖同志被称之为世界最成功的80后" new_str = str_val.replace("⾦三胖", "⻢赛克", 1) print(str_val) print(new_str) ``` ![Snipaste_2020-08-28_13-59-10.png](http://i.loli.net/2020/08/28/wqud5lF9PNKBsxC.png) > 注意: > 1. 旧字符可能存在多次,此时可通过设置替换次数来决定具体替换多少个 > 2. 字符串属于不可变数据类型,所以修改并不会影响原来的空间 **02 split** * 功能:按照指定字符来分割字符串 * 语法: **字符串.split(分割符,num)** * 示例: ``` mystr = "hello world and itcast and itheima and Python" # 结果:['hello world ', ' itcast ', ' itheima ', ' Python'] print(mystr.split('and')) # 结果:['hello world ', ' itcast ', ' itheima and Python'] print(mystr.split('and', 2)) # 结果:['hello', 'world', 'and', 'itcast', 'and', 'itheima', 'and', 'Python'] print(mystr.split(' ')) # 结果:['hello', 'world', 'and itcast and itheima and Python'] print(mystr.split(' ', 2)) ``` > 注意: > 1. num 为具体数值,当分割符存在多次时,可以设定使用几次 > 2. 默认不传入分割符则会以空格为边界 **03 join** * 功能:一般用于将列表按指定子字符合并为字符串 * 语法: 字符串.join(⼀般为列表) * 示例: ``` list1 = ['张三', '李四', '⼩五', '⿊'] print('_'.join(list1)) # 结果:张三_李四_⼩五_⿊ ``` <br /> ## 五、判断类工具方法 > 通过工具方法对字符串做出规则判断,返回 True 或者 False **01 startswith** * 功能:判断目标字符串是否以 XXX 开头 * 语法: 字符串.startswith(被测试字符, 开始位置, 结束位置) * 示例: ``` test_str = "知⾳,能有⼀两个已经很好了,实在不必太多。朋友之乐,贵在那份踏实的信赖" print(test_str.startswith("知⾳")) # True ``` **02 endswith** * 功能:判断目标字符串是否以 XXX 结尾 * 语法: 字符串.endswith(被测试字符, 开始位置, 结束位置) * 示例: ``` test_str = "知⾳,能有⼀两个已经很好了,实在不必太多。朋友之乐,贵在那份踏实的信赖" print(test_str.startswith("软件测试")) # Flase ```