首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >连仕彤博客[Python笔记] Python内置数据结构之字符串

连仕彤博客[Python笔记] Python内置数据结构之字符串

作者头像
行 者
发布2018-07-05 10:42:24
5170
发布2018-07-05 10:42:24
举报
文章被收录于专栏:运维技术迷运维技术迷

字符串基础

– 一个个字符组成的有序的序列,是字符的集合; – 使用单引号、双引号、三引号引住的字符序列; – 字符串是不可变对象; – Python3开始,字符串就是Unicode类型;

字符串定义和初始化

str1 = 'abc'
str2 = "asdfg123"
str3 = '''this's a string'''
str4 = 'hello \n lianst.com'
str5 = r"hello \n lianst.com"
str6 = 'c:\windows\nt'
str7 = R"c:\windows\nt"
str8 = 'c:\windows\\nt'
sql = """select * from user where name = 'root'"""
 

字符串元素访问

字符串是有序的,可迭代的,所以就可以使用下标的方法来访问。 – 使用下标来访问字符串中的元素,下标的值默认是从0开始的。

In [7]: sql = """select * from user where name = 'root'"""
 
In [8]: sql[5]  # 使用下标访问字符串中的元素
Out[8]: 't'
 
 

– 字符串是有序的字符集合,是可以迭代的。

 
In [10]: sql = """select * from user where name = 'root'"""
 
In [11]: for x in sql:
    ...:     print(x)  # 打印遍历出来的值
    ...:     print(type(x)) # 查看遍历出来的值的类型
    ...:     
s
<class 'str'>  # 可以看到遍历出来的值的类型都是str(字符串类型)
e
<class 'str'>
l
<class 'str'>
e
<class 'str'>
c
<class 'str'>
t
<class 'str'>
 
<class 'str'>
*
<class 'str'>
....
 

字符串拼接

1. join拼接

– 语法:”string”.join(iterable)—-> str – 将可迭代的对象连接起来,使用string作为分隔符 – 可迭代对象本身的元素都是字符串 – 拼接完成后将会返回一个新的字符串

In [12]: lst = ['a','b','c']
 
In [13]: print("\"".join(lst))
a"b"c
 
In [14]: lst
Out[14]: ['a', 'b', 'c']  # 可以看出来拼接完成后是返回的一个新的字符串,而不是在lst上面修改
 
In [15]: print(" ".join(lst))
a b c
 
In [16]: print("\n".join(lst))
a
b
c
 
In [19]: lst = ['1',['a','b'],'3']
 
In [20]: print(" ".join(lst))
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-20-5a7c8b71fc4f> in <module>()
----> 1 print(" ".join(lst))
 
TypeError: sequence item 1: expected str instance, list found

2. +号拼接 – 语法: str1 + str2 –> New str – 将2个字符串连接(或者叫拼接)在一起 – 拼接成功后会返回一个新的字符串

In [21]: str1 = "abc"
 
In [22]: str2 = "asdfghjh"
 
In [23]: str1 + str2
Out[23]: 'abcasdfghjh'

字符串分割

split系列:将字符串按照分隔符分割成若干字符串,并返回列表

spiit – 语法:split(sep=None,maxsplit=-1) –>list of strings – 按照分隔符从左至右依次分割 – sep指定分割的字符串,默认情况下空白字符串作为分隔符 – maxsplit执行分割的次数,-1表示遍历整个字符串

In [24]: str1 = "i'm \ta super student."
 
In [25]: str1.split()
Out[25]: ["i'm", 'a', 'super', 'student.']
 
In [26]: str1.split('s')
Out[26]: ["i'm \ta ", 'uper ', 'tudent.']
 
In [27]: str1.split('super')
Out[27]: ["i'm \ta ", ' student.']
 
In [28]: str1.split(' ')
Out[28]: ["i'm", '\ta', 'super', 'student.']
 
In [30]: str1.split(' ',maxsplit=2)
Out[30]: ["i'm", '\ta', 'super student.']
 
In [31]: str1.split('\t',maxsplit=2)
Out[31]: ["i'm ", 'a super student.']

rspiit – 语法:rsplit(sep=None,maxsplit=-1) –>list of strings – 按照分隔符从右至左依次分割 – sep指定分割的字符串,默认情况下空白字符串作为分隔符 – maxsplit执行分割的次数,-1表示遍历整个字符串

In [38]: str1 = "i'm \ta super student."
 
In [39]: str1.rsplit()
Out[39]: ["i'm", 'a', 'super', 'student.']
 
In [40]: str1.rsplit('s')
Out[40]: ["i'm \ta ", 'uper ', 'tudent.']
 
In [41]: str1.rsplit('super')
Out[41]: ["i'm \ta ", ' student.']
 
In [43]: str1.rsplit(' ')
Out[43]: ["i'm", '\ta', 'super', 'student.']
 
In [44]: str1.rsplit('\t',maxsplit=2)
Out[44]: ["i'm ", 'a super student.']

splitlines – 语法:splitlines([keepends]) –> list of strings – 按照行来切分字符串 – keepends值的是是否保留行分隔符 – 行分隔符包括\n,\r\n,\r等

In [46]: 'ab c\n\nde fg\rkl\r\n'.splitlines()
Out[46]: ['ab c', '', 'de fg', 'kl']
 
In [47]: 'ab c\n\nde fg\rkl\r\n'.splitlines(True)
Out[47]: ['ab c\n', '\n', 'de fg\r', 'kl\r\n']
 
In [48]: str1 = '''I'm a super student.'''
 
In [49]: str1 = '''I'm a super student.
    ...: You're a super teacher.'''
 
In [50]: print(str1)
I'm a super student.
You're a super teacher.
 
In [51]: print(str1.splitlines())
["I'm a super student.", "You're a super teacher."]
 
In [52]: print(str1.splitlines(True))
["I'm a super student.\n", "You're a super teacher."]

—————————————————————————————————–

partition系列: 将字符串按照分割分分割成2段,返回这2段和分隔符的元组

partition – 语法:partition(sep) –>(head,seq,tail) – 从左至右,遇到分隔符就把字符串分割成两部分,返回头、分隔符、尾三部分的三元组; – 如果没有找到分隔符,就返回头、2个空元素的三元组; – sep分割字符串,必须指定。

In [53]: str1 = "I'm a super student."  
 
In [54]: str1.partition('s')  # 以's'为分隔符分割
Out[54]: ("I'm a ", 's', 'uper student.')  
 
In [56]: str1.partition('stu')  # 以'stu'为分隔符分割
Out[56]: ("I'm a super ", 'stu', 'dent.')
 
In [57]: str1.partition('')  # 没有制定分隔符是会抛异常的,因为sep是必须指定的
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-57-e93649150055> in <module>()
----> 1 str1.partition('')
 
ValueError: empty separator
 
In [58]: str1.partition('abc')  # 以'abc'为分隔符来分割,因为str1字符串中没有'abc',所以就返回头和2个空元素的三元组
Out[58]: ("I'm a super student.", '', '')
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 字符串基础
  • 字符串定义和初始化
  • 字符串元素访问
  • 字符串拼接
  • 字符串分割
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档