Python数据结构——字符串

简介: Python数据结构——字符串

一、字符串的不变性

1、属于不可变对象,不能通过索引操作来改变字符串对象本身

s = 'I like Python'
s[7] = 'p'

要修改字符串,需要使用字符串的replace()方法,会产生新字符串!

s = 'I like Python'
s1 = s.replace('P','p')
s1

2、对字符串变量使用赋值操作后,该变量将指向一个新的字符串对象

s = 'I like Python'
id(s)
 
t = 'too'
s+=t
id(s)

注意:类似于+=、*=这样的复合赋值运算符对于可变对象和不可变对象的处理不同:

(1)对于列表等可变对象,+=赋值后,变量仍然指向原来的对象(即id(s)不变),但原来的对象改变了;

(2)对于数值、字符串等不可变对象,+=赋值后,变量将指向一个新对象(即id(s)改变) ,因为原来的对象不能被改变。

list1 = [1,2,3]
list2 = ['a','b','c']
id(list1)
 
list1 = list1 +list2
list1
 
id(list1)
 
list1+=list2
list1
 
id(list1)

小结:对于不可变对象,s+=t与s=s+t的作用相同,而对于可变对象,两个操作的作用不同!

二、字符串的常见方法介绍

注意首字母大写方法capitalize()和title()的区别 :

s = 'my python'
print(s.capitalize())
print(s.title())

capitalize()是将第一个单词的首字母大写;

title()是将每一个单词的首字母大写。

三、字符串对象的join()和split()方法

1、join():将字符串/元组/列表中的元素以指定的分隔符(sep)连接生成一个新的字符串;语法:'sep'.join(sequence)

2、split():通过指定分隔符对字符串进行分割,并返回分割后的字符串形成的列表对象;语法:str.split(str=“”, num=string.count(str)),其中str :分隔符,默认为所有的空白字符,包括空格、换行(\n)、制表符(\t)等。 num:分割次数。默认为 -1, 即分隔所有。

s1 = ['love','life,','love','Python!']
s2 = ' '.join(s1)
s2
 
s3 = s2.split()
s3
 
s4 = s2.split(',')
s4

s5 = 'a\tb\n c\nd'
s6 = s5.split()
s6
 
s7 = ''.join(s5.split())
s7

四、删除空白的Istrip()和rstrip()方法

       空白很重要,因为你经常需要比较两个字符串是否相同。一个重要的示例是,在用户登录网站时检查其用户名。不过在非常简单的情形下,额外的空格也可能令人迷惑。所幸,在 Python 中删除用户输人数据中的多余空白易如反掌。


       Python 能够找出字符串开头和末尾多余的空白。要确保字符串未尾没有空白,可使用方法rstrip()。


str = 'python '
str
 
str.rstrip()
 
str

       与变量 str 相关联的字符串末尾有多余的空白。在终端会话中向 Python 询问这个变量的值时,可看到末尾的空格。对变量 str 调用方法 rstrip()后,这个多余的空格被删除了。然而,这种删除只是暂时的,接下来再次询问 str 的值时,你会发现这个字符串与输人时一样,依然包含多余的空白。

        要永久删除这个字符串中的空白,必须将删除操作的结果关联到变量:

str = 'python '
str = str.rstrip()
str

       为删除这个字符串中的空白,要将其末尾的空白剔除,再将结果关联到原来的变量。在编程中,经常需要修改变量的值,再将新值关联到原来的变量。这就是变量的值可能随程序的运行或用户输人数据而发生变化的原因所在。

       你还可以剔除字符串开头的空白,或者同时剔除字符串两边的空白。为此,可分别使用方法lstrip()和strip():

str1 = ' python '
str1.rstrip()
 
str1.lstrip()
 
str1.strip()

       在这个示例中,我们首先创建了一个开头和末尾都有空白的字符串。接下来,分别删除末尾、开头和两边的空白。尝试使用这些剥除函数有助于你熟悉字符串操作。在实际程序中,这些剥除函数最常用于在存储用户输入前对其进行清理。


目录
相关文章
|
7天前
|
存储 算法 数据安全/隐私保护
【Python学习篇】Python实验小练习——高级数据结构(五)
【Python学习篇】Python实验小练习——高级数据结构(五)
24 1
|
1天前
|
算法框架/工具 索引 Python
Python基础教程(第3版)中文版 第三章 使用字符串(笔记)
Python基础教程(第3版)中文版 第三章 使用字符串(笔记)
|
2天前
|
Python
使用Python处理字符串。
使用Python处理字符串。
|
2天前
|
Python
Python使用正则表达式分割字符串
在Python中,你可以使用re模块的split()函数来根据正则表达式分割字符串。这个函数的工作原理类似于Python内置的str.split()方法,但它允许你使用正则表达式作为分隔符。
|
5天前
|
存储 数据挖掘 数据处理
【python源码解析】深入 Pandas BlockManager 的数据结构和初始化过程
【python源码解析】深入 Pandas BlockManager 的数据结构和初始化过程
|
5天前
|
存储 算法 数据挖掘
LeetCode 题目 43:字符串相乘 多种算法分析对比 【python】
LeetCode 题目 43:字符串相乘 多种算法分析对比 【python】
|
5天前
|
SQL 算法 数据可视化
LeetCode第八题:字符串转换整数 (atoi)【8/1000 python】
LeetCode第八题:字符串转换整数 (atoi)【8/1000 python】
|
7天前
|
存储 Python
Python字符串魔力:打造高效进销存系统的利器
Python字符串魔力:打造高效进销存系统的利器
|
7天前
|
XML 数据采集 自然语言处理
掌握Python字符串:全面解析与实战指南
掌握Python字符串:全面解析与实战指南
|
9天前
|
算法 Java Go
【经典算法】LeetCode28 找出字符串中第一个匹配项的下标(Java/C/Python3实现含注释说明,Easy)
【经典算法】LeetCode28 找出字符串中第一个匹配项的下标(Java/C/Python3实现含注释说明,Easy)
6 0