字符串

一个个字符串组成的有序的序列,是字符串的集合.
使用单引号、双引号、三引号引住的字符串序列.
字符串是不可变对象.
Python3起,字符串默认是Unicode类型

字符串join连接*

"String".join(iterable) -> str将可迭代对象连接起来,使用String作为分隔符可迭代对象本身元素都是字符串返回一个新字符串有引用对象时,无法使用
>>> l1
['1', '2', '3']
>>> '$'.join(l1)
'1$2$3'            # 新字符串
>>> ' '.join(l1)
'1 2 3'
>>> l2
[1, 2, 3]          # 可迭代对象为int类型
>>> ' '.join(l2)
Traceback (most recent call last):File "<stdin>", line 1, in <module>
TypeError: sequence item 0: expected str instance, int found
>>> l3
['1', ['a', 'b'], '2']       # 可迭代对象中有引用对象
>>> '\n'.join(l3)
Traceback (most recent call last):File "<stdin>", line 1, in <module>
TypeError: sequence item 1: expected str instance, list found

字符串分割*

分割字符串的方法分为两类split系将字符串安装分隔符分割成若干字符串,并返回列表partition系将字符串按照分隔符分割成两段,返回这2段和分隔符本身的元组
  • split
    Str.split(sep=None, maxsplit=-1) -> list of strings
    从左至右,返回字符串列表
    sep 指定分割符,缺省的情况下空白字符串作为分隔符,分隔符用引号引起
    maxsplit 指定分割的次数,-1 表示遍历整个字符串,范围超出时效果同-1

>>> s1
"i'm \t a spuer student."
>>> s1.split()       # 默认为空白字符(包括\t)
["i'm", 'a', 'spuer', 'student.']>>> s1.split(sep='\t')
["i'm ", ' a spuer student.']
>>> s1.split(sep='s')
["i'm \t a ", 'puer ', 'tudent.']>>> s1.split(sep='s',maxsplit=1)
["i'm \t a ", 'puer student.']
>>> s1.split(sep='s',maxsplit=2)
["i'm \t a ", 'puer ', 'tudent.']
>>> s1.split(sep='s',maxsplit=3)
["i'm \t a ", 'puer ', 'tudent.']
>>> s1.split(sep='s',maxsplit=-2)       # 次数范围不合法,默认同-1
["i'm \t a ", 'puer ', 'tudent.']
  • rsplit
    Str.rsplit(sep=None, maxsplit=-1) -> list of strings
    从右至左,返回字符串列表,其它同split

>>> s1
"i'm \t a spuer student."
>>> s1.rsplit(sep='t')
["i'm \t a spuer s", 'uden', '.']
>>> s1.rsplit(sep='t',maxsplit=1)    # 从右至左,以't'为分隔符
["i'm \t a spuer studen", '.']
>>> s1.rsplit(sep='t',maxsplit=2)
["i'm \t a spuer s", 'uden', '.']
  • splitlines
    Str.splitlines([keepends]) -> list of strings
    按照换行符来切分字符串
    keepends 指的是是否保留行分隔符
    行分隔符包括\n、\r\n、\r等

>>> print('ab c\n\nde fg\rkl\r\n')
ab ckl fg>>> 'ab c\n\nde fg\rkl\r\n'.splitlines()
['ab c', '', 'de fg', 'kl']
>>> 'ab c\n\nde fg\rkl\r\n'.splitlines(True)
['ab c\n', '\n', 'de fg\r', 'kl\r\n']
  • partition
    Str.partition(sep) -> (head, sep, tail)
    从左至右,遇到分隔符就把字符串分割成两部分,返回头、分隔符、尾三部分的三元组;如果没有找到分隔符,就返回头、2个空元素的元组
    sep 分割字符串,必须指定

>>> s2
'/a/b/c'
>>> s2.partition('b')     # 以'b'为分隔符,切成两部分
('/a/', 'b', '/c')
  • rpartition
    Str.rpartition(sep) -> (head, sep, tail)
    从右至左,其它同partition

>>> s2
'/a/b/c'
>>> s2.rpartition('/')
('/a/b', '/', 'c')
  • 字符串大小写(做判断时使用)

        upper()、lower()、swapcase()全大写、全小写、大小写交换
  • 字符串排版

    title() -> str每个单词首字符大写
    capitalize() -> str首个单词的首字符大写
    center(width[,fillchar]) -> str字符居中width 打印的总宽度fillchar 两侧填充的字符
    zfill(width) -> strwidth 打印的总宽度(包括原字符串),原字符串右对齐,左侧用0填充
    ljust(width[,fillchar]) -> str 左对齐
    rjust(width[,fillchar]) -> str 右对齐

字符串修改*

  • replace
    Str.replace(old, new[, count]) -> str
    字符串中找到匹配替换为新子串,返回新字符串
    count表示替换次数,不指定表示全部替换

>>> 'aaa'.replace('a','b')
'bbb'
>>> 'aaa'.replace('a','b',2)
'bba'
  • strip
    Str.strip([chars]) -> str
    从字符串两端去除指定的字符集chars中的所有字符
    如果chars没有指定,默认去除两端的空白字符

>>> s1
' abccba '
>>> s1.strip()      # 去除空白字符
'abccba'
>>> s1.strip('a')   # 从两端开始扫描,去除字符最前方的字符'a'
' abccba '
>>> s1.strip(' a')  # 去除空白字符和'a'
'bccb'
>>> s1.strip(' abc') # 去除字符集' abc'
''
  • lstrip
    Str.lstrip([chars]) -> str 
    从左开始去除

  • rstrip
    Str.rstrip([chars]) -> str
    从右开始去除

字符串查找*

  • find
    S.find(sub[, start[, end]]) -> int
    在指定区域[start,end) ,从左至右,查找子串sub.找到返回子串首字符索引,没找到返回-1

  • rfind
    S.rfind(sub[, start[, end]]) -> int
    在指定区域[start,end) ,从右至左,查找子串sub.找到返回子串首字符索引,没找到返回-1

>>> s1
' abccba '
>>> s1.find('a')  # 从左至右找
1
>>> s1.rfind('a')  # 从右至左找
6>>> s1.find('a',1)  # 从索引为1的位置开始查找
1
>>> s1.find('a',2)  # 从索引为2的位置开始查找
6
>>> s1.find('a',-2) # 从索引为-2的位置开始查找
6
  • index
    S.index(sub[, start[, end]]) -> int
    同find,但没有找到时抛出异常

  • rindex
    S.index(sub[, start[, end]]) -> int
    同rfind,但没有找到时抛出异常

  • count
    S.count(sub[, start[, end]]) -> int
    在指定的区间[start,end),从左至右,统计子串sub出现的次数

>>> s1
' abccba '
>>> s1.count('a')
2
  • len(string)
    返回字符串的长度,即字符的个数

注意:

    index和count方法都是O(n)随着列表数据规模的增大,而效率下降

字符串判断*

  • startswith
    S.startswith(prefix[, start[, end]]) -> bool
    在指定区间[start,end),字符串是否是prefix开头

  • endswith
    S.endswith(suffix[, start[, end]]) -> bool
    在指定区间[start,end),字符串是否是suffix结尾

>>> s1
'my name is pythoner'
>>> s1.endswith('pythoner')
True
>>> s1.endswith('er')
True
>>> s1.startswith('my')
True
>>> s1.startswith('My')
False

字符串判断is系列
isdigit() 是否所有字符全部是数字0-9
S.isdigit() -> bool
isidentifier() -> bool
是不是字母和下划线开头,其它都是字母、数字、下划线

>>> s1
'my name is pythoner'
>>> s1.isidentifier()
False
>>> s2='_da1213'
>>> s2.isidentifier()
True

字符串格式化***

format函数格式字符串语法"{} {xxx}".format(*args,**kwargs) -> strargs是位置参数,是一个元组kwargs是关键字参数,是一个字典花括号表示占位符{}表示按照顺序匹配位置参数,{n}表示取位置参数索引为n的值{xxx}表示在关键字参数中搜索名称一致的对象{{}} 表示打印花括号本身

- 位置参数

    >>> "{}:{}".format('0.0.0.0',80)'0.0.0.0:80'按照位置顺序用位置参数替换前面的格式字符串的占位符

- 关键字参数或命名参数

    >>> '{server} {1}:{0}'.format(80,'0.0.0.0',server='Web Server')'Web Server 0.0.0.0:80'位置参数按照序号匹配,关键字参数按照名称匹配

- 访问元素

    >>> '{0[0]}:{0[1]}:{0[2]}'.format([1,2,3])'1:2:3'访问列表对象的元素

- 对象属性访问

    >>> from collections import namedtuple>>> Point = namedtuple('Point','x,y')>>> ins = Point(1,2)>>> '{0.x}:{0.y}'.format(ins)        # ins类的属性'1:2'

- 对齐

左对齐 <
右对齐 >
宽度
填充 >>> '{0}*{1}={2:>3}'.format(2,3,2*3)
'2*3=  6'
>>> '{0}*{1}={2:>03}'.format(2,3,2*3)
'2*3=006'

- 进制

>>> "{0:x} {0:o} {0:b} {0:d}".format(10)
'a 12 1010 10'

转载于:https://blog.51cto.com/12074120/1970701

python内置数据结构之str相关推荐

  1. python内置数据结构教程_python课程第二周 内置数据结构——列表和元组

    5种内置数据结构:列表.元组.字典.集合.字符串.列表.字典.字符串三种被称为线性结构.针对线性结构的操作有:切片.封包和解包.成员运算符.迭代. 针对数据结构的操作有解析式:解析式分为列表解析.生成 ...

  2. Python内置数据结构及其复杂度

    为了使用python实现复杂数据结构与算法,需要借助python内置的基础和数据结构,主要是list和dict,明白这两种数据结构各操作的复杂度对于问题求解以及计算复杂度有着至关重要的作用. 一.li ...

  3. Python内置数据结构--列表

    本节内容: 列表 元组 字符串 集合 字典 本节先介绍列表. 一.列表 一种容器类型.列表可以包含任何种类的对象,比如说数字.子串.嵌套其他列表.嵌套元组. 任意对象的有序集合,通过索引访问其中的元素 ...

  4. 【Python】07、python内置数据结构之字符串

    一.字符串 1.定义和初始化 In [4]: s = "hello python" In [4]: s = "hello python"In [5]: s Ou ...

  5. python内置数据结构教程第四版答案_Python数据结构--内置数据结构

    本文提到的所有内容均是基于Python 2.7,在Python 3.x的环境下可能并不完全适用 什么是数据结构 我们可以看一下在百度百科对于数据结构是怎么定义的: 数据结构是指相互之间存在着一种或多种 ...

  6. python内置数据结构_Python基础知识2-内置数据结构(下)

    bytes.bytearray #思考下面例子: a = 1b=aprint(a == b)#True print(a is b)#True print(id(a) is id(b))#False p ...

  7. python内置数据结构字符串

    一.字符串的创建和赋值 字符串或串(String)是由数字.字母.下划线组成的一串字符.Python 里面最常见的类型. 可以简单地通过在引号间(单引号,双引号和三引号)包含字符的方式创建它. 一个反 ...

  8. Python内置数据结构——字符串string

    字符串 字符串定义 一个个字符组成的有序的序列,是字符的集合 使用单引号.双引号.三引号引住的字符序列 字符串是不可变对象 Python3起,字符串就是Unicode类型 字符串元素访问--下标 字符 ...

  9. python内置数据结构_Python内置数据结构(一)

    1.列表 (1)列表初始化 (2)下标/索引操作 (3)修改列表元素 (4)增加列表元素 1)append 2)insert 3)extend (5)删除列表元素 1)pop 2)remove 3)c ...

最新文章

  1. Java项目:在线考试系统(java+springBoot+vue+Mysql+maven)
  2. 马哥教育第二十四ftp协议、vsftpd的高级应用、rpc概念及nfs的基本应用、samba及其基本应用...
  3. C#中string a=null和string b=区别
  4. ios nslinkattributename 自定义url_iOS音视频播放指南(二)
  5. VMWARE错误-VirtualInfrastructure.Utils.ClientsXml的类型初始值设定项引发异常
  6. ❀❀ selenium 学习网站 ★★★★★
  7. 乐迪机器人开热点_碧桂园餐饮机器人量产!预计年产能达4000台
  8. 知识表示与知识图谱--介绍
  9. 人类首张黑洞照片咋拍的:7千TB数据太大网络传不了只能飞机运
  10. 12123两小时没付款怎么办_机械厂上班的男朋友,一天十小时,周末不休,没时间陪我怎么办?...
  11. fiddler抓包第一课--手机数据抓包
  12. 【LCS】POJ1458Common Subsequence
  13. python 插入数据库 b“Incorrect syntax near ‘,‘.DB-Lib error message 20018
  14. java 包之 BeanUtils包的使用
  15. 线段树详解 一(单点更新 区间查询)
  16. linux好用的下载工具,四款linux下的好工具
  17. android ssh软件,优秀的 Android SSH 工具推荐
  18. java生成zipf分布_数据存储中Zipf分布
  19. EventEmitter练习之--匿名聊天室
  20. 来来来,一起去看临泉王冲林岗的红枫叶

热门文章

  1. IT 往事录:苹果 Mac 之父,却在 Mac 问世前黯然退场
  2. 惨烈!程序员放弃了 Python!?发生了啥?
  3. UOJ#179. 线性规划(线性规划)
  4. FFMPEG视音频编解码学习(1)
  5. Exchange 2010 共享邮箱
  6. vue写的简单版todolist
  7. mybatis plus 中 EntityWrapper源码解读
  8. 聊聊SwitchUserFilter的使用
  9. 背水一战 Windows 10 (40) - 控件(导航类): AppBar, CommandBar
  10. 网易SRC指责白帽子私自披露已修复漏洞,强势表态违刑必究