字符串是由零个或多个字符组成的有限序列,它是编程语言中表示文本的数据类型。字符串是一种序列类型
,因此也支持序列类型的各种操作。
在python中用单引号(''
)、双引号(""
)、和三引号(''' '''
| """ """
)包起来的内容表示字符串。
注意:
- 单引号、双引号、三引号必须是英文输入法
- 单引号、双引号、三引号必须是成对出现
1.字符串示例
>>> 'hello world'
hello world
>>> type('hello world')
<class 'str'>
>>> "hello world"
hello world
>>> "Isn't, they said"
"Isn't, they said"
#转义字符
>>> 'Isn\'t, they said'
"Isn't, they said"
#多行字符
>>> ''' hello world
hello world
hello world'''
' hello world\nhello world\nhello world'
2.原始字符串
原始字符串:所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。用r
或R
来表示原始字符串。
>>> r'C:\Windows\System32\cmd'
'C:\\Windows\\System32\\cmd'
>>> R'C:\Windows\System32\cmd'
'C:\\Windows\\System32\\cmd'
3.字符串拼接
在编程中最常见的操作就是对字符串的操作。
# 字符串拼接
>>> 'hello' + ' world'
'hello world'
# 字符串重复3次
>>> 'hello' * 3
'hellohellohello'
# 字符h 是否在字符串'hello'
>>> 'h' in 'hello'
True
# 字符h 是否不在字符串'hello'
>>> 'h' not in 'hello'
False
4.获取单个字符
>>> 'hello world'[0]
'h'
>>> 'hello world'[4]
'o'
>>> 'hello world'[-1]
'd'
>>> 'hello world'[-2]
'l'
5.获取一组字符
注意:在使用切片时,要注意左开右合,就是左边是闭区间,右边是开区间
# 从下标0开始到下标3结束
>>> 'hello world'[0:4]
'hell'
# 从下标0开始,反方向的第一个结束。 -号表示反方向
>>> 'hello world'[0:-1]
'hello worl'
>>> 'hello world'[0:-3]
'hello wo'
# 从下标3开始直到字符串末尾
>>> 'hello world'[3:]
'lo world'
>>> 'hello world'[3:-1]
'lo worl
>>> 'hello world'[:4]
'hell'
>>> 'hello world'[:-1]
'hello worl'
# 第一位必须是正数,不然没有意义
>>> 'hello world'[-1:4]
''
6.获取字符串的长度
>>> len('hello world')
11
7.常见字符串操作函数
大小写相关
函数名 | 描述 | 示例 | 结果 |
---|
capitalize() | 这一行首字母转换为大写 | ‘jupyter notebook’.capitalize() | ‘Jupyter notebook’ |
title() | 所有单词的首字母都大写 | ‘jupyter notebook’.title() | ‘Jupyter Notebook’ |
casefold() | 全部转换为小写 | “BOOK”.casefold() | book |
lower() | 全部转换为小写 | “BOY”.lower() | boy |
upper() | 全部转换为大写 | “boy”.upper() | BOY |
swapcase() | 把大写转小写,小写转大写 | “Jared Chen”.swapcase() | jARED cHEN |
istitle() | 判断首字母是否全部为大写 | “Jared Chen”.istitle() “Jared chen”.istitle() | True False |
isupper() | 判断是否全部大写 | “JARED CHEN”.isupper() “JARED CHENa”.isupper() | True False |
查找相关
函数名 | 描述 | 示例 | 结果 |
---|
find() | 查找字符串中包含的指定字符,并返回字符串中最左边的指定字符的下标 | ‘jupyter notebook’.find(‘up’) | 1 |
rfind() | 从左往右数,找到最右边那个值的下标 | “jared chen”.rfind(‘e’) | 8 |
判断相关
函数名 | 描述 | 示例 | 结果 | |
---|
isalnum() | 判断字符串中是不是同时包含字母和数字,如果同时包含了字母和数字,而且没有包含其它空格和任何特殊字符那么就返回True | ‘123aBc’.isalnum() ‘.123aBc’.isalnum() | True False | |
isalpha() | 判断字符串中是不是只有英文字母,如果只有英文字母而其没有其它数字、空格和任何特殊字符,就返回True | ‘123aBc’.isalpha() ‘aBc’.isalpha() | False True | |
isdecimal() | 判断是否为十进制 | “123”.isdecimal() “0x123”.isdecimal() “abc”.isdecimal() | True False False | |
isdigit() | 判断是否为整数 | “123”.isdigit() “123.2”.isdigit() | True False | |
isnumeric() | 判断是否只包含数字 | “123.2”.isnumeric() “123”.isnumeric() | False True | |
isspace() | 判断字符串是否为空格 | “12 34”.isspace() “ “.isspace() | False True | |
endswith() | 判断字符串是否以指定字符结尾,如果是,就返回True | ‘jupyter notebook’.endswith(“an”) ‘jupyter notebook’.endswith(‘ok’) | False True | |
startswith() | 判断字符串是否以指定字符开始,如果是,就返回True | ‘jupyter notebook’.startswith(‘an’) ‘jupyter notebook’.startswith(‘ju’) | False | True |
打印格式相关
>>> name = "my \tname is {name}, age is {age}."
>>> name
'my \tname is {name}, age is {age}.'
>>> name.format(age=22,name='jared')
'my \tname is jared, age is 22.'
join()
>>> list = ["1","2","3","4","5"]
>>> "+".join(list)
'1+2+3+4+5'
ljust()
>>> name = 'hello'
>>> name.ljust(100,"*")
hello***********************************************************************************************
rjust()
>>> name = 'hello'
>>> name.rjust(100,"*")
'***********************************************************************************************hello'
center()
>>> name = 'hello'
>>> name.center(100,"-")
'-----------------------------------------------hello------------------------------------------------'
替换相关
expandtabs()
把字符串中的tab转换成多个空格,这里转换成了30个空格
>>> name = "jupyter\tnotebook"
>>> name.expandtabs(30)
'jupyter notebook'
>>> name.expandtabs(tabsize=30)
'jupyter notebook'
replace()
替换字符串中的指定字符,可以指定替换次数
>>> "jared chen".replace('e','E',1)
'jarEd chen'
>>> "jared chen".replace('e','E')
'jarEd chEn'
其他常用操作
split()
把字符串按照指定字符分成一个列表,默认以空格分割成一个列表
>>> "jared+chen+".split("+")
['jared', 'chen', '']
splitlines()
按照换行符,把字符串分割成一个列表
>>> "boy\njared\n".splitlines()
['boy', 'jared']
lstrip()
去除左边的换行
>>>> "\n1 23\n".lstrip()
'1 23\n'
rstrip()
去除两边的换行
>>> "\n1 23\n".strip()
'1 23'
count()
>>> 'jupyter notebook'.count('o')
3
encode()
>>> 'jupyter notebook'.encode()
b'jupyter notebook'