学习笔记9_Python 非数字型变量 之 字符串

字符串的定义

  • 字符串 就是 一串字符,是编程语言中表示文本的数据类型
  • 在 Python 中可以使用 一对双引号 " 或者 一对单引号' 定义一个字符串
      i.如果字符串内部需要使用",可以使用 ' 定义字符串
      ii.如果字符串内部需要使用 ',可以使用 " 定义字符串
  • 可以使用 索引 获取一个字符串中 指定位置的字符,索引计数从 0 开始
  • 也可以使用 for 循环遍历 字符串中每一个字符
str1 = "Hello Python"
str2 = '她的外号叫"小机灵鬼"'

# 索引
print(str1[7])

# 循环遍历
for char in str2:
    print(char)
    

字符串的索引 和 循环遍历

str1 = "Hello Python"
str2 = '她的外号叫"小机灵鬼"'

# 索引
print(str1[7])

# 循环遍历
for char in str2:
    print(char)
    

字符串的统计操作

  • 统计字符串的长度
str3 = ("Hello Hello")

print(len(str3))
  • 统计某一个小(子)字符串出现的次数
str3 = ("Hello Hello")

print(str3.count("llo"))

# 如果该子字符串不穿在,则出现次数为0
print(str3.count("abc"))
  • 某一个子字符串出现的位置
str3 = ("Hello Hello")

print(str3.index("llo"))

# 如果子字符串不存在,程序会报错
print(str3.index("abc"))

1)判断类型

方法
说明
string.isspace()如果 string 中只包含空格,则返回 True
string.isalnum()如果 string 至少有一个字符并且所有字符都是字母或数字则返回 True
string.isalpha()如果 string 至少有一个字符并且所有字符都是字母则返回 True
string.isdecimal()如果 string 只包含数字则返回 True全角数字
string.isdigit()如果 string 只包含数字则返回 True全角数字\u00b2
string.isnumeric()如果 string 只包含数字则返回 True全角数字汉字数字
string.istitle()如果 string 是标题化的(每个单词的首字母大写)则返回 True
string.islower()如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True
string.isupper()如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True
  • 判断空白字符
str4 = "    \t \n \r"

print(str4.isspace())
  • 判断数字
# 1) 都不能判断小数
# str5 = "1.1"
# 2) unicode 字符串
# str5 = "\u00b2"
# 3) 中文数字
str5 = "一百"
print(str5)
print(str5.isdecimal())
print(str5.isdigit())
print(str5.isnumeric())

2)查找和替换

方法
说明
string.startswith(str)检查字符串是否是以 str 开头,是则返回 True
string.endswith(str)检查字符串是否是以 str 结束,是则返回 True
string.find(str, start=0, end=len(string))检测 str 是否包含在 string 中,如果 startend 指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则返回 -1
string.rfind(str, start=0, end=len(string))类似于 find(),不过是从右边开始查找
string.index(str, start=0, end=len(string))find() 方法类似,不过如果 str 不在 string 会报错
string.rindex(str, start=0, end=len(string))类似于 index(),不过是从右边开始
string.replace(old_str, new_str, num=string.count(old))string 中的 old_str 替换成 new_str,如果 num 指定,则替换不超过 num
  • 判断是否以指定的字符串开始
str6 = "Hello Python"

print(str6.startswith("hello"))
  • 判断是否以指定的字符串结束
str6 = "Hello Python"

print(str6.endswith("Python"))
  • 查找指定的字符串
str6 = "Hello Python"

print(str6.find("thon"))
# 指定范围
print(str6.find("thon", 0, 1))

# index 同样可以查找指定的字符串在大字符串中的索引
# index 如果指定的字符串不存在,程序报错
# find 如果指定的字符串不存在,返回 -1
print(str6.find("abc"))

print(str6.index("abc"))
  • 替换字符串
str6 = "Hello Python"

# replace 方法执行完成以后,会返回一个新的字符串
# 注意不会修改原有字符串的内容
print(str6.replace("Python","World"))
print(str6)

3)大小写转换

方法
说明
string.capitalize()把字符串的第一个字符大写
string.title()把字符串的每个单词首字母大写
string.lower()转换 string 中所有大写字符为小写
string.upper()把字符串的第一个字符大写
string.swapcase()翻转 string 中的大小写

4)文本对齐

方法
说明
string.ljust(width)返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串
string.rjust(width)返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串
string.center(width)返回一个原字符串居中,并使用空格填充至长度 width 的新字符串
poem_str = ["望天门山",
            "李白",
            "天门中断楚江开",
            "碧水东流至此回",
            "两岸青山相对出",
            "孤帆一片日边来"]

# 居中
# 注意用中文的括号更便于观察,系统默认是英文的括号
for poem in poem_str:
    print("|%s|" % poem.center(9, " "))
    

  运行结果如下:

|   望天门山  |
|    李白   |
| 天门中断楚江开 |
| 碧水东流至此回 |
| 两岸青山相对出 |
| 孤帆一片日边来 |
  • 注意是每一行居中,整体上不一定居中

5)去除空白字符

方法
说明
string.lstrip()截掉 string 左边(开始)的空白字符
string.rstrip()截掉 string 右边(末尾)的空白字符
string.strip()截掉 string 左右两边的空白字符
poem_str = ["\t\n望天门山",
            "李白",
            "天门中断楚江开",
            "碧水东流至此回\t\n",
            "两岸青山相对出",
            "孤帆一片日边来"]

# 先去除空白格,再居中文本
for poem in poem_str:
    poem = poem.strip()
    print("|%s|" % poem.center(9, " ")) 
    
# 等价于: print("|%s|" % poem.strip().center(9, " ")) 
    

6)拆分和连接

方法
说明
string.partition(str)把字符串 string 分成一个 3 元素的元组 (str前面, str, str后面)
string.rpartition(str)类似于 partition() 方法,不过是从右边开始查找
string.split(str="", num)str 为分隔符拆分 string,如果 num 有指定值,则仅分隔 num + 1 个子字符串,str 默认包含 \r, \t, \n空格
string.splitlines()按照行(\r, \n, \r\n)分隔,返回一个包含各行作为元素的列表
string.join(seq)string 作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串
poem_str = "望天门山 \t 李白 天门中断楚江开 \n 碧水东流至此回 \t\n 两岸青山相对出 孤帆一片日边来"

print(poem_str)

# 1、拆分字符串
poem_list = poem_str.split()
print(poem_list)

# 2、连接字符串
print(" ".join(poem_list))

  运行结果如下:

望天门山   李白 天门中断楚江开 
 碧水东流至此回  
 两岸青山相对出 孤帆一片日边来
['望天门山', '李白', '天门中断楚江开', '碧水东流至此回', '两岸青山相对出', '孤帆一片日边来']
望天门山 李白 天门中断楚江开 碧水东流至此回 两岸青山相对出 孤帆一片日边来

字符串的切片

  • 切片 方法适用于 字符串、列表、元组
     i. 切片 使用 索引值 来限定范围,从一个大的 字符串 中 切出 小的 字符串
     ii. 列表 和 元组 都是 有序 的集合,都能够 通过索引值 获取到对应的数据
     iii.字典 是一个 无序 的集合,是使用 键值对 保存数据
字符串[开始索引:结束索引:步长]

注意:

  • 指定的区间属于 左闭右开 型 ,从 起始 位开始,到 结束位的前一位 结束(不包含结束位本身)
  • 从头开始,开始索引 数字可以省略,冒号不能省略
  • 到末尾结束,结束索引 数字可以省略,冒号不能省略
  • 步长默认为 1,如果连续切片,数字和冒号都可以省略

索引的顺序和倒序

  • 在 Python 中不仅支持 顺序索引,同时还支持 倒序索引
  • 所谓倒序索引就是 从右向左 计算索引
  • 最右边的索引值是 -1,依次递减

  例子如下:

  • 截取从 2 ~ 5 位置 的字符串
num_str = "0123456789"

print(num_str[2:6])
  • 截取从 2 ~ 末尾 的字符串
num_str = "0123456789"

print(num_str[2:])
  • 截取从 开始 ~ 5 位置 的字符串
num_str = "0123456789"

print(num_str[:6])
  • 截取完整的字符串
num_str = "0123456789"

print(num_str[:])
  • 从开始位置,每隔一个字符截取字符串
num_str = "0123456789"

print(num_str[::2])
  • 从索引 1 开始,每隔一个取一个
num_str = "0123456789"

print(num_str[1::2])
  • 截取从 2 ~ 末尾 - 1 的字符串
num_str = "0123456789"

print(num_str[2:-1])
  • 截取字符串末尾两个字符
num_str = "0123456789"

print(num_str[-2:])
  • 字符串的逆序
num_str = "0123456789"

print(num_str[-1::-1])  # print(num_str[::-1]) 
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值