python数据结构之字符串详解

目录

一、什么是字符串

二、字符串的特性

1.拼接

2.字符串的格式化输出

 3.字符串索引

 4.字符串分片

5.字符串的不可变性

三、字符串的好用函数

1.大小写切换

2.分割、组合和移除

①split()

②join()

③strip()

3.统计、定位与替换

4.判断字符串是否以某个字符开头或者结尾

四、format格式化输出方法

1.format()的字符串格式化方法

2.format()的格式控制

Ⅰ.填充,对齐,宽度字段的使用示例

Ⅱ.千分号,精度,类型的使用示例

五、总结


一、什么是字符串

诸如一对英文双引号或单引号以及三引号包裹的任何数据称为字符串。三引号与其他两个引号的不同点在于三引号是可以换行的,其他两个引号包裹的只限于单行。

str1 = "haha"
str2 = 'xixi'
str3 = '''哇啊啊啊,
张彬彬真的好帅,
怎么会有张彬彬这么帅的人!!'''

print(str1)
print("-------")
print(str2)
print("-------")
print(str3)

结果:
haha
-------
xixi
-------
哇啊啊啊,
张彬彬真的好帅,
怎么会有张彬彬这么帅的人!!

二、字符串的特性

1.拼接

字符串跟列表非常类似,比如字符串具有拼接的特点,列表也有。可见n个相同的字符串拼接等于n*该字符串。字符串1+字符串2=在字符串1后面拼接字符串2的内容

s1 = "数据结构"
s2 = s1 + s1 +s1
s3 = s1*3
s4 = "python"
print("s2",s2)
print("s3",s3)
print("s1+s4",s1+s4)
print("s4+s1",s4+s1)

结果:
s2 数据结构数据结构数据结构
s3 数据结构数据结构数据结构
s1+s4 数据结构python
s4+s1 python数据结构

2.字符串的格式化输出

形如下的输出为字符串的格式化输出,其中%s,%d称为占位符,“%()”的形式为格式化输出,其中%为运算符,括号为元组。

def print_info(name,heigh):
    print("%s身高为%d厘米"%(name,heigh))
print_info("张彬彬",183)
print_info("杨洋",180)

结果:
张彬彬身高为183厘米
杨洋身高为180厘米

常见的占位符和和意义如下表:

占位符意义
%s字符串
%d正数
%f浮点数
%x十六进制整数

ps:如果你不太确定应该用什么占位符,%s 是万能的,它会把任何数据类型转换为字符串。

 3.字符串索引

与列表类似,字符串也有索引,并且也支持正向索引和反向索引。正向索引是从 0 开始计数,而反向索引则是从 -1 开始计数,这一点一定要记清楚。一般我们采取“就近原则”来决定使用正向索引还是反向索引——即访问靠前的元素用正向索引,靠后的元素用反向索引,这样就可以尽可能少地数这是第几个元素了。注意:空格也占一个索引的位置。

str = 'Hello World'
print(str[6])  # 输出:W
print(str[5])  # 输出: 空格
print(str[-5])  # 输出:W

为了让大家更清楚,截个图给大家看一下:

 可见第三行是一个空格,因为print函数是自带换行的特性的,所以三个print输出的结果为三行。特殊说明一下。print函数也可以取消换行,如果这样的话,需要在结尾加上end属性,可以改为以你想要的字符结尾。

str = 'Hello World'
print(str[6],end="&")  # 输出:W,以&号结尾
print(str[5],end="")  # 输出: 空格,并且不含有结尾符号
print(str[-5],end=",")  # 输出:W,以英文逗号结尾
print()#换行输出
print(str[0],end="*")#输出:H,以*号结尾


结果:
W& W,
H*

 4.字符串分片

字符串的分片与列表分片一样,举个栗子:

str = 'Hello World'
# 下面两个效果一样
print(str[6:])  # 输出:World
print(str[-5:])  # 输出:World

string[n:m],表示从索引n开始,到索引m-1结束的子字符串,是一个左闭右开的区间。其中

m-n=子字符串中的字符个数。分片中前后索引的值是可以省略的,前索引省略默认为 0,后索引省略默认为序列长度。

string = 'Hello World'

# 从索引 0 开始,到索引 3 为止,不包括索引 3
print(string[0:3])
# 输出:Hel

# 如果第一个索引是 0,可以省略
print(string[:3])
# 输出:Hel

print(string[3:11])
# 输出:lo World

# 如果分片到末尾,后面也可以省略
print(string[3:])
# 输出:lo World

# 如果都省略,则是复制一个一样的字符串
print(string[:])
# 输出:Hello World

再看一个例子:

string = 'Hello World'
print(string[0:100000])
l = ['H','L']
print(l[0:7])

结果:
Hello World
['H', 'L']

可能在没有输出之前,可能我们会觉得这两个会报错,因为觉得索引越界,其实不然。字符串和列表可以想象成绳子,分片就是用刀将绳子切分开来。在字符串和列表长度内分片相当于在绳子上切割,而超出范围相当于一刀砍到了空气,对于绳子来说没有影响。但是,如果不是切片,是索引的话,就会报错,产生索引越界。

5.字符串的不可变性

字符串与元组一样,具体有不可变性。例如

s1 = "鹿班七号"
s1[0] = "鲁"
print(s1)

结果:
TypeError: 'str' object does not support item assignment

那如果我们想把这个字改成正确的可以怎么操作呢?我们可以采用字符串的可拼接性。

s1 = "鹿班七号"
s2 = "鲁" +s1[1:]
print(s2)

结果:
鲁班七号

三、字符串的好用函数

1.大小写切换

函数名作用
upper()字符串中所有的字母都大写
lower()字符串中所有的字母都小写
capitalize()字符串的第一个字母变成大写,其他字母变小写。首字符如果是非字母则不变,其他字母变小写。
title()字符串中每个单词的首个字符大写
swapcase()字符串中的大写字母改成小写,小写字母改成大写
string = "today is a Happy day"
print("原字符",string)
print("upper()---->",string.upper())
print("lower()---->",string.lower())
print("capitalize()---->",string.capitalize())
print("title()---->",string.title())
print("swapcase()---->",string.swapcase())
结果:
原字符 today is a Happy day
upper()----> TODAY IS A HAPPY DAY  #全大写
lower()----> today is a happy day #全小写
capitalize()----> Today is a happy day #只有开头第一个单词首字母大写
title()----> Today Is A Happy Day #每个单词的首字母大写
swapcase()----> TODAY IS A hAPPY DAY #大写改成小写,小写改成大写

2.分割、组合和移除

函数名作用
split()通过指定分隔符对字符串进行分割,有两个可选参数,第一个参数为分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。第二个参数为最大分割次数,默认为 -1,即不限次数。
join()用于将序列中的元素以指定的字符连接生成一个新的字符串。join() 方法接收一个序列(列表、元组、字符串等)作为参数,. 前面的字符串用于连接符。
strip()用于移除字符串开头和结尾指定的字符(默认为空字符)或字符序列。当传入一个字符串时,会将传入字符串中每个字符依次移除。

①split()

该函数返回值是列表类型。当有连续的空格时,只分隔第一个空格,其余的空格作为单独的字符串输出在列表里。

str1 = " \n冰\t淇 淋-加 点 糖 "
print("原字符串如下:",str1)
print("split()---->",str1.split())#以空格、换行(\n)、制表符(\t)等分隔
print("split(' ')---->",str1.split(' '))#以空格分隔,且开头和结尾的空格无法去除
print("split('-')---->",str1.split("-"))#以"-"分隔,该例子中将其分隔为两个字符串,其他部分保留输出
str2 = "冰淇淋加点糖"
print(str2.split("加点")) #可以以某几个字作为切割点
str3 = "冰 淇 淋 加 点 糖"
print(str3.split(" ",3))#3为最大分割次数,表示分隔3个空格
str4 = "冰   淇 淋 加 点 糖"
print(str4.split(" ",3))#连续的空格,只分隔第一个,其余作为字符
结果:
原字符串如下:  
冰	淇 淋-加 点 糖 
split()----> ['冰', '淇', '淋-加', '点', '糖']
split(' ')----> ['', '\n冰\t淇', '淋-加', '点', '糖', '']
split('-')----> [' \n冰\t淇 淋', '加 点 糖 ']
['冰淇淋', '糖']
['冰', '淇', '淋', '加 点 糖']
['冰', '', '', '淇 淋 加 点 糖']

②join()

“x”.join(str)表示将x插入到str字符串中间,该函数返回的是字符串类型。

str1 = "冰淇淋加点糖"
print("-".join(str1))#输出:冰-淇-淋-加-点-糖
print(" ".join(str1))#输出:冰 淇 淋 加 点 糖
list1 = ["冰","淇","淋","加","点","糖"]
print("$".join(list1))#输出:冰$淇$淋$加$点$糖
print("".join(list1))#输出:冰淇淋加点糖
tuple1 = ("冰","淇","淋","加","点","糖")
print("*".join(tuple1))#输出:冰*淇*淋*加*点*糖
print("".join(tuple1))#输出:冰淇淋加点糖

③strip()

该函数返回的是字符串类型。

str1 = "!!!冰-淇-淋-加-点-糖!!!"
print(str1.strip("!"))#输出:冰-淇-淋-加-点-糖
str2 = "!$!$!冰-淇-淋-加-点-糖!!!"
# 当传入的是一个字符串时,会依次删除该字符串中出现的符号
print(str2.strip("!$"))#输出:冰-淇-淋-加-点-糖
print(str2.strip("$!"))#输出:冰-淇-淋-加-点-糖
str3 = "\n 冰-淇-淋-加-点-糖\n \t"
print(str3.strip())#删除空格、换行(\n)、制表符(\t)等开头或结尾的符号
#输出:冰-淇-淋-加-点-糖

3.统计、定位与替换

函数名作用
count()用于统计字符串中某个子串出现的次数。第一个参数为要统计次数的字符串,后两个可选参数为在字符串搜索的开始与结束索引。
find()查找子串str第一次出现的位置,如果找到则返回相应的索引,否则返回-1
index()

查找子串str第一次出现的位置,如果找到则返回相应的索引,否则报错

replace()用于将字符串中的指定字符串替换成别的字符串。第一个参数为被替换字符串,第二个参数为替换字符串,第三个可选参数为替换的最多次数,默认为无限次。

代码举例:

str1 = "冰冰冰淇淋加点糖糖"
print(str1.count("糖"))#输出:2
print(str1.count("冰"))#输出:3
print(str1.count("冰冰"))#输出:1

print(str1.index("糖")) #输出:7
print(str1.find("唐"))#输出:-1
print(str1.find("糖"))#输出:7
print(str1.find("冰",3))#输出:-1。从索引为3开始向后查找字符”冰“,即从“淇淋加点糖糖”查找字符”冰“,查不到返回-1
print(str1.find("冰",1,3))#输出:1.从索引为2开始向后查找字符”冰“,到索引为3结束查找。第一个出现的“冰”索引为1
# print(str1.index("唐"))#输出:Traceback (most recent call last):ValueError: substring not found

print(str1.replace("糖","棒棒糖"))#输出:冰冰冰淇淋加点棒棒糖棒棒糖
print(str1.replace("糖","棒棒糖",1))#输出:冰冰冰淇淋加点棒棒糖糖(将糖改为棒棒糖且只改一次)

4.判断字符串是否以某个字符开头或者结尾

函数名作用
startswith(str)判断某个字符串是否以str开头,返回布尔值
endswith(str)判断某个字符串是否以str结尾,返回布尔值

代码举例:

str1 = "冰淇淋加点糖"
print(str1.startswith("冰"))#输出:True
print(str1.endswith("糖"))#输出:True

四、format格式化输出方法

字符串的特性中讲述了“%()”的格式化输出方法,还有一种比较好用的格式化方法是format。

1.format()的字符串格式化方法

format方法可以用"{}"作为占位符,用于格式化输出,类似一个萝卜一个坑的思想,如果没有编号,则format里面数据的依次占位{}

print('我叫{},今年 {} 岁,来自{}'.format('冰淇淋加点糖', 18, '安徽'))# 我叫冰淇淋加点糖,今年 18 岁,来自安徽
print('我叫{0},今年 {1} 岁,来自{2}'.format('冰淇淋加点糖', 18, '安徽'))# 我叫冰淇淋加点糖,今年 18 岁,来自安徽
print('我叫{2},今年 {1} 岁,来自{0}'.format( '安徽', 18,'冰淇淋加点糖'))# 我叫冰淇淋加点糖,今年 18 岁,来自安徽
print('我叫{name},今年 {age} 岁,来自{province}'.format(name='冰淇淋加点糖', age=18, province='安徽'))# 我叫冰淇淋加点糖,今年 18 岁,来自安徽
print('我叫{name},今年 {age} 岁,来自{province}'.format(name='冰淇淋加点糖',province='安徽', age=18,))# 我叫冰淇淋加点糖,今年 18 岁,来自安徽

2.format()的格式控制

format()方法的占位符除了可以包括参数序号,还可以包括格式控制信息,语法格式如下:

{<参数序号>:<格式控制标记>}

<填充><对齐><宽度><,><.精度><类型>
引导符号用于填充的单个字符

< 左对齐

> 右对齐

^ 居中对齐

占位符的设定输出宽度数字的千分位分隔符,适用于整数和浮点数浮点数小数部分的精度或字符串的最大输出长度

整数类型

b,c,d,o,x,X

浮点数类型

e,E,F,%

Ⅰ.填充,对齐,宽度字段的使用示例

格式控制符可以用变量来表示,用占位符对应控制标记及数量

str1 = "冰淇淋加点糖"
# (左对齐,宽度1)宽度小于实际长度,原样输出
print("{:<1}".format(str1))#输出:冰淇淋加点糖
# (右对齐,宽度25)
print("{:>25}".format(str1))#输出:                   冰淇淋加点糖
# (填充$,左对齐,宽度25)
print("{:$<25}".format(str1))#输出:冰淇淋加点糖$$$$$$$$$$$$$$$$$$$
# (居中对齐,宽度25)
print("{:^25}".format(str1))#输出:         冰淇淋加点糖
# (填充$,居中对齐,宽度25)
print("{:$^25}".format(str1))#输出:$$$$$$$$$冰淇淋加点糖$$$$$$$$$$

str2 = "冰淇淋加点糖"
tianchong = "*"
duqi = "^"
width = 25
print("{0:{1}{2}{3}}".format(str2,tianchong,duqi,width))#输出:*********冰淇淋加点糖**********

Ⅱ.千分号,精度,类型的使用示例

# 千分号
print("{:$^25,}".format(12345678))#输出:$$$$$$$12,345,678$$$$$$$$
print("{:$^25}".format(12345678))#输出:$$$$$$$$12345678$$$$$$$$$

# 浮点数
print("{:$^25,.2f}".format(12345.678))#输出:$$$$$$$$12,345.68$$$$$$$$
print("{:>25.3f}".format(12345.6789))#输出:                12345.679

# 字符串的精度是去前n个字符
print("{:.3}".format("冰淇淋加点糖"))#输出:冰淇淋
print("{:>25.15}".format("冰淇淋加点糖"))#输出:                   冰淇淋加点糖

# 4的二进制表示
print("{:b}".format(4))#输出:100
# 173的八进制表示(173辗转相除8得八进制)
print("{:o}".format(173))#输出:255
# 15的十六进制小写表示
print("{:x}".format(15))#输出:f
# 15的十六进制大写写表示
print("{:X}".format(15))#输出:F

# %百分比形式
print("{:.2%}".format(0.56894))#输出56.89%
# 五舍六入
print("{:.2%}".format(0.56896))#输出56.89%

# 科学计数法表示
# 小写e表示
print("{:e}".format(0.56987))#输出:5.698700e-01
print("{:e}".format(123456789))#输出:1.234568e+08
# 大写E表示
print("{:E}".format(0.56987))#输出:5.698700E-01
print("{:E}".format(123456789))#输出:1.234568E+08

五、总结

字符串的操作与列表类似,同时具有列表的性质和元组的不可变性。字符串的常用函数和format函数需重点掌握。

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: Pandas是Python编程语言的一个开源数据分析和数据处理库。它提供了丰富的数据结构和功能,使得数据分析任务更加简单和高效。而Xmind是一种思维导图工具,可以帮助用户组织和展示复杂概念和信息。 Pandas库结合了NumPy的功能和扩展了更高级的数据结构,最重要的是它的数据结构--Dataframe。Dataframe是一个二维的表格型数据结构,类似于数据库表或Excel中的表格。它提供了各种方法来处理和操纵这些表格数据,包括数据的索引、选择、过滤、排序、分组等。 使用Pandas库可以读取和写入多种数据格式,如CSV、Excel、SQL数据库等。通过Pandas的数据结构,用户可以进行数据清洗和转换,处理缺失数据、重复数据、异常数据等。此外,Pandas还提供了强大的时间序列处理功能,可以进行时间索引、频率转换、滞后、移动窗口等操作。 在数据分析方面,Pandas提供了各种统计计算的方法,如平均值、标准差、协方差、相关系数等。同时,Pandas库还能够进行数据可视化,通过绘图的方式展示数据的分布、趋势和关联关系。这使得数据分析师可以更加直观地理解和解释数据。 Xmind是一种用于创建思维导图的工具,它可以将复杂的概念和信息以图形化的方式展示出来。思维导图可以帮助用户整理和梳理思路,帮助用户更好地理解和记忆知识。在使用Pandas进行数据分析时,可以使用Xmind来记录和整理自己的数据分析过程,包括数据处理的步骤、分析的结果和相关的观察或发现。这样可以帮助用户更好地管理和沟通数据分析的过程和结果。 总结来说,Pandas是一个功能强大的数据分析和处理库,通过其丰富的数据结构和方法,可以简化和高效完成各种数据分析任务。而Xmind则是一种思维导图工具,能够帮助用户整理和展示复杂概念和信息,方便用户将数据分析过程和结果进行可视化和整理。使用Pandas和Xmind可以让数据分析任务更加简单和直观。 ### 回答2: Pandas是一个开源的Python数据分析库,它提供了丰富的数据结构和数据分析工具,使得数据处理更加简单、高效。而Pandas库中的核心数据结构是DataFrame,可以理解为一个二维的表格数据,类似于Excel中的数据表。Xmind是一款思维导图软件,可以帮助我们更好地组织和展示思维。 Pandas可以通过Xmind来进行详解,主要包括以下几个方面: 1. DataFrame的创建和基本操作:可以通过读取文件、字典、Numpy数组等方式来创建DataFrame,然后可以进行数据的选取、切片、筛选等操作。 2. 数据的清洗和处理:Pandas提供了强大的数据清洗和处理功能,可以用来处理缺失数据、重复数据以及异常值。也可以进行数据的合并、拆分、排序等操作,以及字符串、时间序列、数值等类型的转换。 3. 数据的分组和聚合:Pandas的分组和聚合功能非常强大,可以进行按列或者按行的分组操作,然后对每一组数据进行一些聚合操作,如求和、计数、平均值等。这样可以更好地了解数据的分布和概况。 4. 数据的可视化:Pandas可以配合Matplotlib等数据可视化工具,对数据进行绘图和可视化操作。可以绘制线图、柱状图、饼图等各种图表,更直观地展示数据的特征和趋势。 综上所述,使用Pandas库可以更方便地进行数据分析和处理,而通过Xmind来详细说明Pandas的各种功能和操作,能够更好地帮助用户理解和应用这些功能,从而更高效地进行数据分析和处理。 ### 回答3: Pandas是一个Python库,专门用于数据分析和数据操作。它提供了高效的数据结构和数据分析工具,使得使用Python进行数据处理变得更加方便和快速。而Xmind是一款脑图软件,用于整理和组织复杂的思维结构。 Pandas提供的数据结构主要包括两种:Series和DataFrame。Series是一维的带有标签的数组,类似于传统的数组或列表。每个元素都有唯一的标签,可以通过标签进行索引取值,方便进行数据查找和操作。DataFrame则是二维的表格型数据结构,类似于关系型数据库中的表。它由多个Series组成,每个Series代表一列数据。DataFrame可以进行行列索引、数据选择和过滤,方便进行数据的清洗和分析。 Pandas提供了丰富的数据操作和分析工具。可以进行数据的读取、清洗、转换和处理。可以对数据进行切片、聚合、排序和合并等操作。还可以对数据进行统计分析、绘图和可视化。Pandas还支持对缺失数据的处理,能够灵活处理数据中的空值,并进行填充或删除操作。 Xmind是一款强大的思维导图软件,可以帮助用户将复杂的信息整理、组织和展示。用户可以使用Xmind创建思维导图来表示数据结构、函数关系、工作流程等。通过将Python中的Pandas库和Xmind结合使用,可以更好地理解和展示数据分析的过程。可以使用脑图绘制数据处理流程图,方便团队内部的交流和理解。同时,可以使用脑图来整理数据分析中的关键知识点和技巧,方便进行知识传递和分享。 综上所述,Python的Pandas库提供了便捷的数据处理和分析工具,而Xmind则可以辅助整理和展示数据分析的过程和结果。两者结合使用,可以帮助用户更好地进行数据分析和可视化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值