Python学习(三):字符串常见操作

157 阅读5分钟

1.字符串运算

1.1 拼接字符串

if __name__ == "__main__":
    name = "张三"
    sex = "男"
    # 使用+ 拼接
    print("使用 + 拼接 >> ", "姓名:" + name + " 性别:" + sex)
    # 使用print 格式化
    print("使用 print 格式化 >> 姓名:%s 性别:%s " % (name, sex))
    # 使用format
    format_var = "姓名:{} 性别:{} ".format(name, sex)
    print("使用 format >> ", format_var)
    
# 使用 + 拼接 >>  姓名:张三 性别:男
# 使用 print 格式化 >> 姓名:张三 性别:男 
# 使用 format >>  姓名:张三 性别:男 

1.2 重复字符串

if __name__ == "__main__":
    name = "张三"
    print("使用:* >>", name * 3)
    
# 使用 * >> 张三张三张三

1.3 截取字符串

if __name__ == "__main__":
    str_var = "我的名字叫张三丰~"
    print("截取前3个字符串 >>", str_var[:3])
    # 第5个是逗号
    print("从索引=5,开始截取 >>", str_var[5:])
    # 从第索引=1个开始截取,到第5个为止
    print("从索引=1,开始截取,到索引=5为止 >>", str_var[1:5])
    # [i:j:k] 从索引i(包括)到索引j(不包含),每隔k步获取一个字符
    print("演示:[i:j:k]", str_var[1:8:2])
    

# 截取前3个字符串 >> 我的名
# 从索引=5,开始截取 >> 张三丰~
# 从索引=1,开始截取,到索引=5为止 >> 的名字叫
# 演示:[i:j:k] 的字张丰

1.4 原样输出

if __name__ == "__main__":
    str_var = "我的名\n 叫张三丰 \n 哈哈哈"
    print("str_var >>", str_var)
    # 使用r
    r_str_var = r"我的名\n 叫张三丰 \n 哈哈哈"
    print("r_str_var >>", r_str_var)
    
# str_var >> 我的名
#  叫张三丰 
#  哈哈哈
# r_str_var >> 我的名\n 叫张三丰 \n 哈哈哈

2. 大小写

2.1 首字母大写

if __name__ == "__main__":
    str_var = "my name is liu qing hui"
    # 所有字符串首字母大写
    print("所有字符串首字母大写 title:",  str_var.title())
    # 第一个字符串首字母大写
    print("第一个字符串首字母大写 capitalize:",  str_var.capitalize())
    
# 所有字符串首字母大写 title: My Name Is Liu Qing Hui
# 第一个字符串首字母大写 capitalize: My name is liu qing hui

2.2 全部大写

if __name__ == "__main__":
    str_var = "my name is liu qing hui"
    # 全部转大写
    print("全部转大写:",  str_var.upper())
    
# 全部转大写: MY NAME IS LIU QING HUI

2.3 全部小写

if __name__ == "__main__":
    str_var = "MY NAME IS LIU QING HUI"
    # 全部小写
    print("全部小写 lower:",  str_var.lower())
    print("全部小写 casefold :",  str_var.casefold())
    
# 全部小写 lower: my name is liu qing hui
# 全部小写 casefold : my name is liu qing hui

lower()方法只对ASCII字符有效,而casefold()方法对所有Unicode字符都有效.

2.4 大转小和小转大

if __name__ == "__main__":
    str_var = "Hello,World"
    # 大转小,小转大
    print("原字符串:",  str_var)
    print("大转小,小转大:",  str_var.swapcase())
    
# 原字符串: Hello,World
# 大转小,小转大: hELLO,wORLD

3. 统计

3.1 字符串出现次数

if __name__ == "__main__":
    str_var = "abcd,abcd,abcd"
    # 所有范围内
    print("字符串a出现的次数:", str_var.count("a"))
    # 指定范围内
    print("str_var[0:7]:", str_var[0:7])
    print("字符串a在str_var[0:7]出现的次数:", str_var.count("a", 0, 7))
    
# 字符串a出现的次数: 3
# str_var[0:7]: abcd,ab
# 字符串a在str_var[0:7]出现的次数: 2

3.2 字符串长度

if __name__ == "__main__":
    str_var = "Hi,张三丰"
    str_var2 = "Hi"
    str_var3 = "张三丰"
    print("str_var长度:", len(str_var))
    print("str_var2长度:", len(str_var2))
    print("str_va3r长度:", len(str_var3))
    

# str_var长度: 6
# str_var2长度: 2
# str_va3r长度: 3

4. 查找

4.1 字符串是否存在

  • find(): 不存在则返回-1,存在则从返回第一个匹配的索引。
if __name__ == "__main__":
    str_var = "Hello,World"
    # 所有范围内
    print("h是否在字符串中:", str_var.find("h"))
    print("o是否在字符串中:", str_var.find("o"))
    
# h是否在字符串中: -1
# o是否在字符串中: 4

index()find()方法一样,区别是:当子字符串不存在时,index()会报异常,推荐使用find()

4.2 使用

if __name__ == "__main__":
    str_var = "Hello,张三"
    print("H in str_var >>", "H" in str_var)
    print("H not in str_var >>", "H" not in str_var)
    print("张三 in str_var >>", "张三" in str_var)
    
# H in str_var >> True
# H not in str_var >> False
# 张三 in str_var >> True

5. 判断

5.1 是否只包含字符或数字

if __name__ == "__main__":
    # 纯英文
    str1 = "hello"
    print("str1:", str1.isalnum())
    # 字母和数字
    str2 = "hello123"
    print("str2:", str2.isalnum())
    # 含有除字母和数字字符
    str3 = "hello@123"
    print("str3:", str3.isalnum())
    # 含有字母和中文
    str4 = "hello张三"
    print("str4:", str4.isalnum())
    
  
# str1: True
# str2: True
# str3: False
# str4: True

5.2 是否只包含字符

if __name__ == "__main__":
    # 纯英文
    str1 = "hello"
    print("str1:", str1.isalpha())
    # 字母和数字
    str2 = "hello123"
    print("str2:", str2.isalpha())
    # 含有除字母和数字字符
    str3 = "hello@123"
    print("str3:", str3.isalpha())
    # 含有字母和中文
    str4 = "hello张三"
    print("str4:", str4.isalpha())
     
# str1: True
# str2: False
# str3: False
# str4: True

5.3 是否只包含数字字符(0-9)

if __name__ == "__main__":
    # 数字和特殊字符
    str1 = "123456@"
    print("str1:", str1.isdigit())
    # 纯数字
    str2 = "123456"
    print("str2:", str2.isdigit())
    # 含有中文和数字
    str3 = "张三18"
    print("str3:", str3.isdigit())
       
# str1: False
# str2: True
# str3: False

5.4 是否只包含数字字符

if __name__ == "__main__":
    # 纯数字
    str1 = "123456"
    print("str2:", str1.isnumeric())
    # 含有中文数字
    str2 = "一2三4五"
    print("str2:", str2.isnumeric())
    
# str1: True
# str2: True

5.5 是否有空白符

空白字符包括空格、制表符、换行符和回车符等

if __name__ == "__main__":
    # 空格
    str1 = " "
    print("str1:", str1.isspace())
    # 含有换行符
    str2 = "\t\n"
    print("str2:", str2.isspace())
    str3 = "hello world "
    print("str3:", str3.isspace())
    
# str1: True
# str2: True
# str3: False

5.6 是否首字母大写

if __name__ == "__main__":
    str1 = "Hello world"
    print("str1:", str1.istitle())
    str2 = "Hello World"
    print("str2:", str2.istitle())
    
# str1: False
# str2: True

6.删除和替换

6.1 替换

if __name__ == "__main__":
    str1 = "a-b-a-b-a-b-a-b"
    print("全部替换结果:", str1.replace("a", "@"))
    print("从左往右替换结果1次:", str1.replace("a", "@", 1))
    print("从左往右替换结果2次:", str1.replace("a", "@", 2))
    print("从左往右替换结果4次:", str1.replace("a", "@", 4))
    
# 全部替换结果: @-b-@-b-@-b-@-b
# 从左往右替换结果1次: @-b-a-b-a-b-a-b
# 从左往右替换结果2次: @-b-@-b-a-b-a-b
# 从左往右替换结果4次: @-b-@-b-@-b-@-b 

6.2 删除

if __name__ == "__main__":
    str1 = " 1 # abc@ "
    print("删除左右空白:", str1.strip())
    print("删除右边空白:", str1.rstrip())
    print("删除左边空白:", str1.lstrip())
    
# 删除左右空白: 1 # abc@
# 删除右边空白:  1 # abc@
# 删除左边空白: 1 # abc@ 

7.分割和拼接

7.1 分割

if __name__ == "__main__":
    str = "Hello,World"
    print("res: ", str.split(","))
    
# res:  ['Hello', 'World']

7.2 拼接

if __name__ == "__main__":
    list_var = ["a", "b", "c", "d"]
    print("res: ", "|".join(list_var))
    str1 = "abcd"
    print("res2: ", "-".join(str1))
    
# res:  a|b|c|d
# res2:  a-b-c-d

8.格式化

if __name__ == "__main__":
    # 基础使用,安装顺序填充
    format1 = "姓名:{} 年龄:{}"
    print(format1.format("张三", 18))
    # {?}中使用数字来指定填充哪个值
    format2 = "姓名:{1} 年龄:{0}"
    print(format2.format("张三", 18))
    # 同一个值可以填充多次
    format3 = "姓名:{0}{0} 年龄:{1}"
    print(format3.format("张三", 18))
    # **** 使用键值对填充  ****
    format4 = "姓名:{name} 年龄:{age}"
    print(format4.format(age=18, name="张三"))
      
# 姓名:张三 年龄:18
# 姓名:18 年龄:张三
# 姓名:张三张三 年龄:18
# 姓名:张三 年龄:18

微信搜索【猿码记】查看更多文章

本文由mdnice多平台发布