高级数据类型--字符串、Unicode字符串
- 1.字符串的定义
- 2.字符串的长度、计数、Index
- 3.字符串常用方法
- 3.1判断类型
- 3.2查找和替换
- 3.3文本对齐
- 3.4去除空白字符.strip()
- 4.字符串的拆分和拼接
- 5.字符串的切片
- 6.跨行字符串
- 7.包含转义字符r
- 8.字符串的分割与连接
- 9.Unicode字符串
字符串-不变性,不能通过索引对其做任何修改
1.字符串的定义
字符串用于存储多个字符,可以用单引号和双引号来定义字符串,大多数编程语言都是使用双引号,为了和其他语言接轨,建议使用双引号进行字符串定义。
str1=“python”
使用单引号定义字符串的情形:字符串中带双引号,那么字符串用单引号定义
Str2='我的名字是"大西瓜" ’
字符串元素访问:[]+索引。
循环遍历,对其中元素进行相同的操作
2.字符串的长度、计数、Index
子字符串:字符串中的一部分元素组成的字符串
hello_str=“hello hello”
1.计算字符串包含的字符数,即字符串的长度。
print(len(hello_str))
2.计算字符串中包含的子字符串的数目。如果子串不存在,计数结果为0。
print(hello_str.count(“llo”))
3.输出子字符串出现的位置(第一个字符的位置),子串不存在会报错。
print(hello_str.index(“abc”))
3.字符串常用方法
字符串有四类常用的方法:判断类型、查找和替换、文本对齐、去除空白字符
在平常应用需求中,明确方法类别,查找方法,查看参数,使用方法,不用死记硬背,编写测试方法。
3.1判断类型
判断方法返回一个True或者False.
1判断是不是只有空白字符,空白字符包括:空格,\t, \n ,\r。回车\r回到本行的开始,Linux:\n换行,win:\r+\n 实现换行。
space_str=" \n \t"
print(space_str.isspace())
输出:True
2.判断是否只包含数字
num_str="\u00b2"
print(num_str)
print(num_str.isdecimal())
print(num_str.isdigit())
print(num_str.isnumeric())
以上三个方法都不能判断小数,能判断的范围越来越大
print(num_str.isdecimal()),能力最小,只能判断一般的数字
print(num_str.isdigit())能判断unicode字符串(不能直接在键盘中输出的数字(1)) (这个版本的好像还是不行Python2.7)
print(num_str.isnumeric())能判断中文数字一、二、等,这个版本的好像还是不行Python2.7)
3.Isalpha()是不是只有字母组成
Istitle()是否首字母大写
Isup()是否全部都大写
Islow()是否全部都小写
3.2查找和替换
hello_str=“hello world”
1.判断以指定字符串开头(区分大小写哦)
print(hello_str.startswith(“Hello”))
输出:False
2.判断以指定字符串结尾(区分大小写哦)
print(hello_str.endswith(“world”))
输出:True
3.查找是否存在某一个子串;如果存在,输出对应索引;如果不存在,输出-1。与index方法很相似,区别:如果子串不在原来字符串中,find方法返回-1,并不会报错。
print(hello_str.find(“llo”))
输出:2
print(hello_str.find(“123”))
输出:-1
4.替换:用指定的子串替换原串内容,执行完成后返回一个新的字符串,不会修改原来的字符串。
print(hello_str.replace(“world”,“pyhton”))
输出hello pyhton
print(hello_str)
输出hello world
3.3文本对齐
支持输出字符串左对齐,右对齐,居中对齐
poem=[
"草",
"白居易",
"离开原上草"
]
for poem_str in poem:
print("|%s|"%poem_str.center(30,"*"))
所有的字符串有一个固定的内容,输出就能够居中了
居中的数值也是需要调整的(本例子中用30),默认使用英文的空格进行居中处理,但是效果不太好,filchar中填入一个全角中文空格,即可实现完全对齐,(Python2.7版本的没有实现对齐呢)
左对齐:
print(poem_str.ljust(30))
右对齐:
print(poem_str.rjust(30))
3.4去除空白字符.strip()
.strip()方法可以去除空白符,包括换行符号。
poem=[
"\t\n草",
"白居易",
"\t离开原上草"
]
for poem_str in poem:
#输出原来字符串,有空白符,很不整齐
print("|%s|"%poem_str)
for poem_str in poem:
#直接居中输出
print("|%s|"%poem_str.center(30,"*"))
没去除空白符在居中输出的结果(原谅我居中效果不是很好)
for poem_str in poem:
#先使用strip方法去除前后两边的空白字符,再居中输出
print("|%s|"%poem_str.strip().center(30,"*"))
去除空白符后的输出结果:
4.字符串的拆分和拼接
poem_str="\t\n草 白居易,\n离开原上草\t一岁一枯荣"
print(poem_str)
poem_list=poem_str.split()
for poem_list_str in poem_list:
print(poem_list_str)
result=" ".join(poem_list)
print(result)
1.poem_str.split()方法去拆分一个字符串,如果不指定分隔符,方法默认以空白符作为分隔符;也就是说,有空白符的地方都会被分隔;拆分后返回一个字符串列表。
2." ".join(poem_list) 方法使用“ “作为分隔符拼接一个整齐的字符串,方法执行完成后返回一个字符串
5.字符串的切片
切片操作适用于字符串,列表,元组
语法:字符串[开始索引:结束索引:步长] ,不包含结束索引对应的内容
步长:有间隔的进行切片。
结束索引不指定,就可以切到最后一个元素。
顺序索引:第一个元素对应的索引为0,其后依次递增
倒序索引:最后一个元素的索引为-1,其前依次是-2,-3,-4
原序列:
步长为负可以从右向左进行切片,对应的索引顺序也应该由大到小。
正序索引的例子:
温馨提示:只有精通,才会思变,因为,简便是驱动力,截图工具的更换
6.跨行字符串
# 跨行字符串用三引号定义,(且别python的多行注视)
# 行尾添加\去除换行符号
s1 = '''你好
明天'''
s2 = '''你好\
明天'''
print(s1)
print(s2)
输出
你好
明天
你好明天
7.包含转义字符r
# 字符串包含转义字符,用r表示不转义的字符
print('E:\note\Python')
print(r'E:\note\Python')
输出
E:
ote\Python
E:\note\Python
8.字符串的分割与连接
str1 = "Zootopia"
print(str1.find("to")) # 返回第一个to的索引
str2 = "Z o o t o p i a"
print(str2.split(" ")) # 以" "分割原字符串,返回一个list,['Z', 'o', 'o', 't', 'o', 'p', 'i', 'a']
print("".join(str2.split(" "))) # 将字符串,List,元组中的元素以指定的字符连接一起。
str3 = ">".join(str1) # Z>o>o>t>o>p>i>a
9.Unicode字符串
# Unicode 更多了是一种编码规则
# 优点是:为现代和古代每一个字符提供了一个统一的序号
# 创建:在字符串前面加u
unicode_str = u'\u4f60\u597d'
print(unicode_str) # 输出:你好