(python)数据结构---字符串
一、概述
- 由一个个字符组成的有序序列。
- 使用单引号、双引号、三引号引住的字符序列。
- 不可变、线性的数据结构。
二、字符串的相关操作
1、元素访问----下标
- 字符串是线性的数据结构,可以使用索引去访问元素。
- 索引不可超界,否则抛异常IndexError。
- 字符串是可迭代的对象。
string = "hello"
print(string[1]) 运行结果如下:
e
string = "hello"
for s in string:
print(s) 运行结果如下:
h
e
l
l
o
2、“string”.join(iterable)
- 使用string作为分隔符,将可迭代对象连接起来。
- 可迭代对象本身内的元素必须是字符串类型。
- 返回一个新的字符串,原字符串不变。
lst = ['', '', 'a']
string = "-".join(lst)
print(string) 运行结果如下:
1-3-a
3、+
- 将两个字符串连接在一起。
- 返回一个新的字符串。
string1 = 'hello'
string2 = 'python'
string3 = string1 + string2
print(string3) 运行结果如下:
hellopython
4、string.split(sep=None, maxsplit=-1)
- sep:指定分隔符,缺省状态下以空白字符作为分割符。
- maxsplit:指定最大分割数,缺省状态下遍历整个字符串。
- 返回一个新的字符串列表。
- 从左向右分割。
- 还有相反的方法rsplit,用法与其一致,只不过这个方法是从右向左开始分割。
string = "I'am a super student"
newstr = string.split('s', 1)
print(newstr) 运行结果如下:
["I'am a ", 'uper student']
string = "I'am a super student"
newstr = string.rsplit('s', 1)
print(newstr) 运行结果如下:
["I'am a super ", 'tudent']
5、string.splitlines([keepends=False])
- keepends:是否保留行分隔符(行分隔符有:\n \r\n \r等)。
- 按照行进行分割。
- 返回一个新的字符串列表。
string = "ab c\n\nde fg\rkl\r\nz"
newstr = string.splitlines()
print(newstr) 运行结果如下:
['ab c', '', 'de fg', 'kl', 'z']
string = "ab c\n\nde fg\rkl\r\nz"
newstr = string.splitlines(True)
print(newstr) 运行结果如下:
['ab c\n', '\n', 'de fg\r', 'kl\r\n', 'z']
6、string.partition(sep)
- 遇到指定的分隔符sep就将字符串分割为三部分(头、分隔符、尾),如果没有找到分隔符,就返回头、2个空元素三部分个部分。
- 返回一个新的元组。
- 从左向右开始分割。
- 还有一个相反的方法rpartition,用法和该方法一致,rpartition是从右向左开始分割的。
string = "I'm a super student"
newtuple = string.partition('s')
print(newtuple) 运行结果如下:
("I'm a ", 's', 'uper student')
7、string.upper()
- 将字符串中的字母全部大写。
- 返回一个新的字符串。
- 与其相反的还有一个方法string.lower(),将字符串中的字母全部小写。
string = "I'm a super student"
newstr = string.upper()
print(newstr) 运行结果如下:
I'M A SUPER STUDENT
8、string.swapcase()
- 将字符串中的字母进行大小写互换
- 返回一个新的字符串。
string = "A b"
newstr = string.swapcase()
print(newstr) 运行结果如下:
a B
9、string.title()
- 将字符串中的每个单词的是首字母大写。
- 返回一个新的字符串。
string = "hello python"
newstr = string.title()
print(newstr) 运行结果如下:
Hello Python
10、string.capitalize()
- 将首个单词的字母大写。
- 返回一个新的字符串。
string = "hello python"
newstr = string.capitalize()
print(newstr) 运行结果如下:
Hello python
11、string.center(width[, fillchar])
- width:按照指定的宽度将字符串居中。
- fillchar:要填充的字符。
- 返回一个新的字符串。
string = "abc"
newstr = string.center(10, "*")
print(newstr) 运行结果如下:
***abc****
12、string.zfill(width)
- 居右对齐,左边用0填充。
- 返回一个新的字符串。
string = "abc"
newstr = string.zfill(10)
print(newstr) 运行结果如下:
0000000abc
13、string.ljust(width[, fillchar])
- 居左对齐,其余空白位置根据指定的字符进行填充。
- 返回一个新的字符串。
- 还有一个与其相反的方法string.rjust(width[, fillchar]),居右对其,其余位置按照指定的字符进行填充。
string = "abc"
newstr = string.ljust(10, "*")
print(newstr) 运行结果如下:
abc*******
string = "abc"
newstr = string.rjust(10, "*")
print(newstr) 运行结果如下:
*******abc
14、string.replace(old, new[, count])
- old:要被替换的字符。
- new:要替换的新字符。
- count:替换的次数,不指定就是全部替换。
- 从字符串中找到匹配的字符old,替换为新的字符new,返回新的字符串。
string = "aabbcc"
newstr = string.replace('b', '*' )
print(newstr) 运行结果如下:
aa**cc
15、string.strip([chars])
- 从字符串两端去除指定字符集chars中的所有字符。
- 如果chars没有指定,则去除两端的空白字符。
- 还有两个与其相对应的方法lstrip,它是从左开始去除指定字符集中的字符;rstrip,它是从右开始去除指定字符集中的字符。
string = "\r \n \t Hello Python \n \t"
newstr = string.strip()
print(newstr) 运行结果如下:
Hello Python
string = "I am very very very sorry"
newstr = string.strip('Iay')
print(newstr) 运行结果如下:
am very very very sorr
16、string.find(sub[, start[, end]])
- 在指定的区间[start, end],查找子串sub,如果找到就返回对应的索引,没有找到就返回-1.
- 与其相反的方法是rfind,用于与其一直,只不过rfind是从右往左查找。
- 还有一个与其相似的方法是string.index(sub[, start[, end]]),不同的地方是如果没有找到它会抛出异常ValueError。
string = "I am very very very sorry"
newstr = string.find('very')
print(newstr) 运行结果如下:
5
17、string.count(sub[, start[, end]])
- 在指定的区间[start, end],统计子串sub出现的次数。
string = "I am very very very sorry"
newstr = string.count('very')
print(newstr) 运行结果如下:
3
18、startswith(prefix[, start[, end]])
- 在指定的区间[start, end],判断字符串是否以prefix开头
- 如果是返回Trun,反之返回False
- 与之相反的还有一个方法string.endswith(suffix[, start[, end]]),它是用来判断字符串是否以suffix结尾的。
string = "I am very very very sorry"
newstr = string.startswith('I')
print(newstr) 运行结果如下:
True
19、字符串判断is系列方法
- string.isalnum() 判断字符串是否有字母和数字组成
- string.isalpha() 判断字符串是否是字母组成
- string.isdecimal() 判断字符串是否只包含十进制数字
- string.isdigit() 判断字符串是否全部数字(0-9)
- string.isdentifler() 判断字符串是否由字母和下划线开头,其他都是数字,字母、下划线
- string.islower() 判断字符串是否全部小写
- string.isupper() 判断字符串是否全部大写
- string.isspace() 判断字符串是否只包含空白字符
(python)数据结构---字符串的更多相关文章
- Python数据结构与算法--List和Dictionaries
Lists 当实现 list 的数据结构的时候Python 的设计者有很多的选择. 每一个选择都有可能影响着 list 操作执行的快慢. 当然他们也试图优化一些不常见的操作. 但是当权衡的时候,它们还 ...
- Python数据结构与算法--算法分析
在计算机科学中,算法分析(Analysis of algorithm)是分析执行一个给定算法需要消耗的计算资源数量(例如计算时间,存储器使用等)的过程.算法的效率或复杂度在理论上表示为一个函数.其定义 ...
- Python数据结构与循环语句
# Python数据结构与循环语句: 首先编程是一项技能,类似跑步,期初不必在意细节,能使用起来就行,等学的游刃有余了再回过头来关注细节问题也不迟. 关于买书: 学会python之后,才需要买书 ...
- Python数据结构之四——set(集合)
Python版本:3.6.2 操作系统:Windows 作者:SmallWZQ 经过几天的回顾和学习,我终于把Python 3.x中的基础知识介绍好啦.下面将要继续什么呢?让我想想先~~~嗯,还是 ...
- 【Python】 字符串的相关小知识点
字符串 很久以前,刚接触IT知识的时候,我觉得字符串还有字符变量是很奇葩的存在.数字,数组,字典什么的这些数据类型要不就是自然界固有的要不就是为了计算方便而发明出来的一些数据的组合方式.但是字符串这玩 ...
- Python学习【第2篇】:Python数据结构
Python数据结构 1.数字类型 2.字符串 3.列表 4.元组 5.字典 6.集合
- Python数据结构和类型--解压序列赋值多个变量
Python数据结构和类型 1.1 解压序列赋值给多个变量 现在有一个包含N个元素的元组或者是序列,怎样将它里面的值解压后同时赋值给N个变量? 解决思路:先通过简单的解压赋值给多个变量,前提是变量的数 ...
- Python数据结构同Json类型数据相互转换的用法
在做Python接口自动化的时候,经常要用到Python数据结构同Json类型数据相互转换来供我们做进一步的验证提供数据,在此做个记录和总结 Python数据结构同Json类型数据相互转换的函数有:j ...
- Python - 数据结构 - 第十五天
Python 数据结构 本章节我们主要结合前面所学的知识点来介绍Python数据结构. 列表 Python中列表是可变的,这是它区别于字符串和元组的最重要的特点,一句话概括即:列表可以修改,而字符串和 ...
- Python 数据结构理解分享
摘要:分享学习Python数据结构的一些理解,主要包含序列(如列表和元组),映射(如字典)以及集合3中基本的数据结构,以及可变和不可变数据类型. Python 中的数据结构是根据某种方式将数据元素组合 ...
随机推荐
- mybatis框架(2)---mapper代理方法
mapper代理方法 在我们在写MVC设计的时候,都会写dao层和daoimp实现层,但假如我们使用mapper代理的方法,我们就可以不用先daoimp实现类 当然这得需要遵守一些相应的规则: (1) ...
- 使用 Infer.NET 进行概率编程
本文介绍了如何使用 Infer.NET 进行概率性编程. 概率性编程是一种将自定义模型表示为计算机程序的机器学习方法. 借助它可以在模型中包含专业知识,使机器学习系统更易理解. 它还支持在线推断,即在 ...
- C++版 - LeetCode 145: Binary Tree Postorder Traversal(二叉树的后序遍历,迭代法)
145. Binary Tree Postorder Traversal Total Submissions: 271797 Difficulty: Hard 提交网址: https://leetco ...
- TCP/IP 笔记 - TCP数据流和窗口管理
TCP流量控制机制通过动态调整窗口大小来控制发送端的操作,确保路由器/接收端消息不会溢出. 交互式TCP连接 交互式TCP连接指该连接需要在客户端和服务器之间传输用户输入信息,如按键操作.短消息.操作 ...
- 【原创】STM32下波特率计算详解
波特率的计算 STM32下的波特率和串口外设时钟息息相关,USART 1的时钟来源于APB2,USART 2-5的时钟来源于APB1.在STM32中,有个波特率寄存器USART_BRR,如下: ...
- java中Char到底是什么格式的编码
文本处理中经常有这样的逻辑: String s = new String(bts, "UTF-8"); 看String源代码,里面是一个char[],将bts按照某种编码方式,变成 ...
- 网络协议抓包分析——IP互联网协议
前言 IP协议是位于OSI模型的第三层协议,其主要目的就是使得网络间可以相互通信.在这一层上运行的协议不止IP协议,但是使用最为广泛的就是互联网协议. 什么是IP数据报 TCP/IP协议定义了一个在因 ...
- HTML+CSS基础(1)-理解什么是HTML和CSS
什么是HTML w3c的解释如下: HTML 是用来描述网页的一种语言. HTML 指的是超文本标记语言 (Hyper Text Markup Language) HTML 不是一种编程语言,而是一种 ...
- [转]MySQL查询缓存清空
本文转自:https://www.cnblogs.com/wangyiwei/p/7765457.html 可以通过下面的SQL查看当前查询缓存相关参数状态: SHOW VARIABLES LIK ...
- C#文件操作。
文件操作常用相关类: File: 操作文件,静态类,对文件整体操作. Directory:操作目录(文件夹),静态类. FileInfo:文件类,用来描述一个文件对象,获取指定目录下的所有文件时,返回 ...