高级数据类型--字符串、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版本的没有实现对齐呢)

python b开头的字符串 解码_空白符

左对齐:

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)

python b开头的字符串 解码_空白符_02

for poem_str in poem:
    #直接居中输出
    print("|%s|"%poem_str.center(30,"*"))

没去除空白符在居中输出的结果(原谅我居中效果不是很好)

python b开头的字符串 解码_python b开头的字符串 解码_03

for poem_str in poem:
    #先使用strip方法去除前后两边的空白字符,再居中输出
    print("|%s|"%poem_str.strip().center(30,"*"))

去除空白符后的输出结果:

python b开头的字符串 解码_字符串_04

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) 方法使用“ “作为分隔符拼接一个整齐的字符串,方法执行完成后返回一个字符串

python b开头的字符串 解码_字符串_05

5.字符串的切片

切片操作适用于字符串,列表,元组

语法:字符串[开始索引:结束索引:步长] ,不包含结束索引对应的内容

步长:有间隔的进行切片。

结束索引不指定,就可以切到最后一个元素。

顺序索引:第一个元素对应的索引为0,其后依次递增
倒序索引:最后一个元素的索引为-1,其前依次是-2,-3,-4

原序列:

python b开头的字符串 解码_ico_06


步长为负可以从右向左进行切片,对应的索引顺序也应该由大到小。

python b开头的字符串 解码_python b开头的字符串 解码_07


正序索引的例子:

python b开头的字符串 解码_ico_08


python b开头的字符串 解码_ico_09

温馨提示:只有精通,才会思变,因为,简便是驱动力,截图工具的更换

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)     # 输出:你好