python-str

字符串

认识字符串

  • 字符串是一个序列。一种不可变序列,它包含的字符存在从左到右的位置顺序。
  • 不可变是指:字符串创建以后无法修改它的内容。
  • 字符串由一对双引号或者单引号包围
1
2
'hell , python'
"你好!北京"
1
2
'hell , python'
'你好!北京'

转义字符

‘ \‘ ‘ 字符串中的引号处理

  • 如果字符串中含有引号要用转义字符处理
1
'who\'re you'
1
"who're you"

‘ \\ ‘ 转义反斜杠

1
print("判断对错!是\\否")
1
判断对错!是\否

‘ \n ‘ 换行符

1
2
3
# \n在输出时换行,
str1 = "Where are you from ? \nbeijing"
print(str)
1
<class 'str'>

‘ \t ‘ 退格符

1
2
3
print('Where are you from ?\tbeijing')

print('Where are you from ?\t\tbeijing')
1
2
Where are you from ?	beijing
Where are you from ? beijing

“ \ “ 长字符串换行

  • 长代码换行,可以把一个长字符串写成多行
  • 实际输出还是一行
1
2
3
4
str1 = 'Where are you from ?\
beijing'

print(str1)
1
Where are you from ?beijing

字符串原样输出

“”” “”” / ‘’’ ‘’’ 三引号或三单引号包围

1
2
3
4
print('''你学会了吗?Y or N?
有什么明白的? ---- 请及时提出来!
OK!
''')
1
2
3
你学会了吗?Y or N?
有什么明白的? ---- 请及时提出来!
OK!

r’ ‘模式输出

  • 关闭转义机制
  • raw 字符串块
1
r'你学会了吗?Y or N? \n 有什么明白的?\t\t 请及时提出来!OK! '
1
'你学会了吗?Y or N? \\n 有什么明白的?\\t\\t 请及时提出来!OK! '
1
r'D:\GTJA\RichEZ\newVer\files\f11\tdxf11_zs.htm'
1
'D:\\GTJA\\RichEZ\\newVer\\files\\f11\\tdxf11_zs.htm'
1
f'D:\GTJA\RichEZ\newVer\files\f11\tdxf11_zs.htm'
1
'D:\\GTJA\\RichEZ\newVer\x0ciles\x0c11\tdxf11_zs.htm'

字符串的操作

  • 字符串是一个序列,可以像序列一样操作

索引和切片

1
2
3
4
str1 = 'python_ string'

# len()函数获取字符串的长度,任意符号以及空格占位符都是一个元素
len(str1)
1
14
1
2
3
4
5
6
7
8
str1 = 'python  _ string'

# 可以索引,可以切片

print(str1[3])
print(str1[2:9])
print(str1[::2])
print(str1[::-1])
1
2
3
4
h
thon _
pto _srn
gnirts _ nohtyp

统计

1
2
3
4
str1.count('n')

str1.count('t', 3)
str1.count('t', 3, -5)
1
2
3
2
1
0

字符串的拼接

以连续书写的形式拼接字符串

1
2
s1 = 'htmml' 'css' 'c++' 'Java'
s1
1
'htmmlcssc++Java'

+运算符拼接字符串

1
2
3
s1 = 'html'
s2 = 'python'
s1 + s2
1
'htmlpython'

字符串的分割

  • str.split(sep,maxsplit)

  • str:表示要进行分割的字符串;

  • sep:用于指定分隔符,可以包含多个字符。此参数默认为 None,表示所有空字符,包括空格、换行符“\n”、制表符“\t”等。

  • maxsplit:可选参数,用于指定分割的次数,最后列表中子串的个数最多为 maxsplit+1。如果不指定或者指定为 -1,则表示分割次数没有限制。

  • 在 split 方法中,如果不指定 sep 参数,那么也不能指定 maxsplit 参数。

默认分隔符为空格

1
2
3
str1 = 'python  _ string'

str1.split()
1
['python', '_', 'string']
1
2
3
str1 = 'python_string'

str1.split()
1
['python_string']

指定分隔符

1
2
3
4
str1 = 'python  _ python.string'

str1.split('_')
str1.split('.')
1
2
['python  ', ' python.string']
['python _ python', 'string']

同时指定分隔符和最大分割数量

1
2
str1 = r'my\name\is\hell\kety'
str1.split('\\', 3)
1
['my', 'name', 'is', 'hell\\kety']

字符串的合并

  • str.join(iterable)
  • 相当于split的反向操作
1
2
s1 = ['my', 'name', 'is', 'hell', 'kety']
str.join('/', s1)
1
'my/name/is/hell/kety'

查找指定字符串

.find()方法

  • .find(sub[, start[, end]]) -> int
  • 找什么?
  • 从哪个位置开始,哪个位置结束
  • 返回找到的数量
1
2
3
str1 = 'python  _ string'

str1.find('t')
1
2

index() 方法

  • 返回查找值首次出现的位置索引。
  • 可以用于检索是否包含指定的字符串,不同之处在于,当指定的字符串不存在时,index() 方法会抛出异常。
1
2
str1 = 'python  _ string'
str1.index('h')
1
3

字符串对齐

ljust() 方法

  • S.ljust(width[, fillchar])
  • S:表示要进行填充的字符串;
  • width:表示包括 S 本身长度在内,字符串要占的总长度;
  • fillchar:作为可选参数,用来指定填充字符串时所用的字符,默认情况使用空格。
1
2
3
4
s1 = 'guangzhou'
s2 = 'bj'
s1.ljust(20, '*')
s2.ljust(20, '-')
1
2
'guangzhou***********'
'bj------------------'

rjust() 方法

  • S.rjust(width[, fillchar])
  • 参数含义同ljust()
  • rjust() 方法是向字符串的左侧填充指定字符
1
2
3
4
s1 = 'guangzhou'
s2 = 'bj'
s1.rjust(20, '*')
s2.rjust(20, '-')
1
2
'***********guangzhou'
'------------------bj'

center() 方法

  • S.center(width[, fillchar])
  • 参数同
  • 让文本居中,而不是左对齐或右对齐
1
2
3
4
s1 = 'guangzhou'
s2 = 'bj'
s1.center(20, '*')
s2.center(20, '-')
1
2
'*****guangzhou******'
'---------bj---------'

检索字符串开头结尾

startswith()方法

  • str.startswith(sub[,start[,end]])
  • 检索是否以指定字符串开头
  • str:表示原字符串;
  • sub:要检索的子串;
  • start:指定检索开始的起始位置索引,如果不指定,则默认从头开始检索;
  • end:指定检索的结束位置索引,如果不指定,则默认一直检索在结束。
1
2
s1 = 'guangzhou'
s1.startswith('s')
1
False

endswith()方法

  • str.endswith(sub[,start[,end]])
  • 检索是否以指定字符串结尾
  • 参数同
1
2
s1 = 'guangzhou'
s1.endswith('ou')
1
True

大小写转换

title()方法

1
2
s1 = 'guangzhOu shenzhEn'
s1.title()
1
'Guangzhou Shenzhen'

lower()方法

1
2
s1 = 'guangzhOu shenzhEn'
s1.lower()
1
'guangzhou shenzhen'

upper()方法

1
2
s1 = 'guangzhOu shenzhEn'
s1.upper()
1
'GUANGZHOU SHENZHEN'

删除特殊字符

strip()方法

  • str.strip([chars])
  • str 表示原字符串
  • [chars] 用来指定要删除的字符,可以同时指定多个,如果不手动指定,则默认会删除空格以及制表符、回车符、换行符等特殊字符。
  • 删除字符串前后(左右两侧)的空格或特殊字符
1
2
3
s1 = r'  guang  zhou '

s1.strip()
1
'guang  zhou'

lstrip()方法

  • 删除字符串左侧的空格和特殊字符
1
2
s1 = r'  guang  zhou '
s1.lstrip()
1
'guang  zhou '

rstrip()方法

  • 删除字符串右侧的空格和特殊字符
1
2
s1 = r'  guang  zhou '
s1.rstrip()
1
'  guang  zhou'