Python学习笔记005——字符串

1.字符串概述

字符串是编程语言中的一种数据类型,Python当中字符串与其他语言中的字符串一样,是一种强大的处理工具集,但与C语言不同的是,Python中没有单个字符这种类型,取而代之的是只有一个字符的字符串类型。Python字符串被划为了不可变序列这一类别,这意味着Python中的字符串存在从左到右的顺序,且他们不可在原位置上修改。

2.一般的字符串

2.1字符串的定义

Python中字符串的定义可以用单引号、双引号和三引号,,其中单双引字符串是一样的,可以通用,但三引号不同,三引号的字符串类似标注信息,可以用来说明代码的用途,也可以在程序中运行。字符串定义的举例:

>>> 'abcd'
'abcd'
>>> "abcd"
'abcd'
>>> """abcd"""
'abcd'
>>> 'ab', "cd"
('ab', 'cd')
>>> 'ab"cd', "ab'cd"  # 逗号隔开的字符串会形成一个元组
('ab"cd', "ab'cd")
>>> title='a'"b"'c'  #字符串会自动合并
>>> title
'abc'

2.2转义字符串

在字符串中加入“\”可以嵌入一些特殊的字符,反斜杠会引入特殊的字节编码,可以让我们能在字符串中嵌入不容易使用键盘输入的字符。Python中提供的一些转义字符如下表,更多的考研参考一些Python教材:

转义 说明
\newline 忽视(连续)
\ \ 反斜杠(\))
\ ’ 单引号(‘)
\ “ 双引号(“)
\ n 换行

2.3Raw字符串

Raw字符串会抑制转义,可以用在不需要转义的场景,比如通过字符串定位到文件并打开。举例如下:

>>> path = 'C:\new\text.dat'
>>> path
'C:\new\text.dat'
>>> print(path)
C:
ew      ext.dat
>>> path = r'C:\new\text.dat'  # Raw字符串抑制转义
>>> print(path)
C:\new\text.dat

2.4三重引号的字符串

又称块字符串,可以方便的写出换行这种格式的字符串。

>>> txt = """llllllll
... bbbbbbbb
... cccccccc
... """
>>> print(txt)
llllllll
bbbbbbbb
cccccccc

3字符串的应用

3.1基本操作

>>> len('abc')  # 求字符串的长度
3
>>> 'abc'+'def'  # 字符串相加
'abcdef'
>>> 'a'*4  # 重复字符的生成
'aaaa'
>>> 'abc'+9  # 错误的使用
Traceback (most recent call last):
  File "", line 1, in <module>
TypeError: must be str, not int
>>> a = "hacker"
>>> 'k' in a
True
>>> 'ha' in a
True

注意,两个字符串相加会生成一个新的字符串对象,同时字符串相加不允许字符串加数字等样式的操作出现。字符串是可迭代对象,故可以使用“in”。

3.2索引和分片

Python中的偏移量是从0开始的,字符串中每一个字符都有其对应的索引值,其功能的使用与列表和元组类似分片一般可以有三个参数,比如S[a️c],a是起始索引,b是结束索引,c是分片步长。

>>> s = "spark"
>>> s[1]  # 按索引取值
'p'
>>> s[-2]  # 取倒数第二个字符
'r'
>>> s[1:3],s[1:],s[:-1]  # 字符串的分片
('pa', 'park', 'spar')
>>> s[::-1]  # 分片的逆序用法
'kraps'

3.3修改字符串

不能原地修改一个字符串,因为字符串是不可变序列。

>>> s = "abcde"
>>> s[0] = b
Traceback (most recent call last):
  File "", line 1, in <module>
NameError: name 'b' is not defined

需要修改时可以尝试使用字符串的拼接(字符串变长)或者分片(字符串变短)来实现,而需要改变字符串的某个位置的字符时可以考虑使用replace方法来替换。

>>> a = "abcdefg"
>>> b = a + "hijklmn"
>>> b
'abcdefghijklmn'
>>> c = a[:3]
>>> c
'abc'
>>> b = a.replace('a', 'pp')  # replace方法会生成新的字符串对象
>>> b
'ppbcdefg'
>>> a  # 原字符串不变
'abcdefg'

3.4常用的字符串方法

replace(a,b) 方法,将字符串中的子字符串a替换为b。

>>> a = "abcdefga"
>>> b = a.replace('a', 'pp') 
>>> b
'ppbcdefgpp'

find(a) 方法返回子字符串a第一次出现的偏移量,如果没有子串a,返回-1。

>>> a = "abcdefga"
>>> a.find("abc")
0
>>> a.find("bcd")
1
>>> a.find("abd")
-1
>>> a.find("asfjlkfsjdafkdjfkaj")
-1

list(s) 方法,将字符串s转换为列表。

>>> a = "abcdefga"
>>> list(a)
['a', 'b', 'c', 'd', 'e', 'f', 'g']

join(s) 方法,将列表s转换为字符串。join为字符串的拼接方法,需要直接作用于字符串上,比如m为字符串,m.join(s)的作用是将s列表中所有的子串以m为分隔拼接起来。

>>> a = "abcdefga"
>>> b = list(a)
>>> b
['a', 'b', 'c', 'd', 'e', 'f', 'g']
>>> ''.join(b)
'abcdefg'
>>> ' '.join(b)
'a b c d e f g'
>>> 'AABB'.join(b)
'aAABBbAABBcAABBdAABBeAABBfAABBg'

split(a) 方法,按照a的方式分割字符串,将分割出来的子串保存到一个列表中,a可以省略,默认按空格分割。

>>> a = "abc bcd cde"
>>> a.split()
['abc', 'bcd', 'cde']
>>> a.split(" ")
['abc', 'bcd', 'cde']
>>> b = "abc,def,g"
>>> b.split(',')
['abc', 'def', 'g']

其他方法的使用:

>>> a = "The knights who say Ni\n"
>>> a.rstrip()  # 去除字符串末尾的换行符
'The knights who say Ni'
>>> a.upper()  # 字符串转换为大写字母
'THE KNIGHTS WHO SAY NI\n'
>>> a.endswith('\n')  # 检测结尾字符串
True
>>> a.startswith('The')  # 检测起始字符串
True

更多的其他字符串方法,可以参考Python的开发手册。

3.5字符串的格式化表达

%s % n 样式。这种样式常见于输出时传入变量的情况,与C语言类似。

>>> "That is %d %s girl" % (1, "nice")
'That is 1 nice girl'

%()s % {} 样式,基于字典的字符串格式化。

>>> "That is %(n)d %(x)s girl" % {'n':1,'x':"nice"}
'That is 1 nice girl'
>>>       

format 方法。

>>> "That is {} {} girl".format(1, "nice")
'That is 1 nice girl'   
>>> "That is {0} {1} girl".format(1, "nice")
'That is 1 nice girl'
>>> "That is {1} {0} girl".format(1, "nice")  # 可以标注数字打乱顺序,0所指代的是format中第一个未命名的参数
'That is nice 1 girl'
>>> "That is {0} {n} girl".format(1,n = "nice") # 也可以给format的参数取名,这样可以不按照顺序来
'That is 1 nice girl'

推荐使用format来格式化字符串。

你可能感兴趣的:(python学习笔记)