字符串常见操作

  • 1.切片
  • 2. 查询(find,index)
  • 3. 大小写转换(upper、lower、swapcase、capitalize和title)
  • 4. 对齐(center,just和zfill)
  • 5. 分割(split、splitlines和partition)
  • 6. 连接合并与替换(join,replace)
  • 7. 判断(isidentifier、isspace、isalpha、isdecimal、isnumeric和isalnum等)
  • 8. 比较(<,>,==,!=max,min等)
  • 9. 去除两端多余字符操作(strip,ltrip,rtrip)
  • 10. 判断开头结尾字符串(startswith,endswith)
  • 11. 字符串计数(count,len)
  • 12. 字符串的编码与解码(encode,decode)
  • 13. 字符串的枚举遍历(enumerate)


1.切片

  • 切片是指对操作的对象截取其中一部分的操作。字符串、列表、元组都支持切片操作。
  • 切片的语法:[起始:结束:步长],也可以简化使用 [起始:结束]
    注意:选取的区间从"起始"位开始(从0开始),到"结束"位的前一位结束(不包含结束位本身),步长表示选取间隔。
  • 索引是通过下标取某一个元素
  • 切片是通过下标去某一段元素
s = 'Hello World!'

print(s[4])

print(s)

print(s[3:7])  # 结果元素里包含下标 3,不含下标 7

print(s[:]) # 取出所有元素(没有起始位和结束位之分),默认步长为1

print(s[1:]) # 从下标为1开始,取出 后面所有的元素(没有结束位)

print(s[:5])  # 从起始位置开始,取到 下标为5的前一个元素(不包括结束位本身)

print(s[:-1]) # 从起始位置开始,取到 倒数第一个元素(不包括结束位本身)

print(s[-4:-1]) # 从倒数第4个元素开始,取到 倒数第1个元素(不包括结束位本身)

print(s[1:5:2]) # 从下标为1开始,取到下标为5的前一个元素,步长为2(不包括结束位本身)
# python 字符串快速逆置
print(s[::-1])  # 从后向前,按步长为1进行取值 ,逆向取值类似reversed(输出结果为可迭代列表)

print([x for x in reversed(s)])

结果

o
Hello World!
lo W
Hello World!
ello World!
Hello
Hello World
rld
el
!dlroW olleH
['!', 'd', 'l', 'r', 'o', 'W', ' ', 'o', 'l', 'l', 'e', 'H']

2. 查询(find,index)

  • find :检测 str 是否包含在 mystr中,如果是返回开始的索引值,否则返回**-1**
  • 语法:mystr.find(str, start=0, end=len(mystr)), 默认从0开始至字符串尾结束。
mystr = 'hello world and my sun'
print(mystr.find('world'))
print(mystr.find('world',0,5))

结果:

6
-1
  • index :跟find()方法一样,只不过如果str不在 mystr中会报一个异常.
  • 语法:mystr.index(str, start=0, end=len(mystr)), 默认从0开始至字符串尾结束。
print(mystr.index('world'))
print(mystr.index('world',0,5))

结果:

6

ValueError Traceback (most recent call last)
in
1 print(mystr.index(‘world’))
----> 2 print(mystr.index(‘world’,0,5))

ValueError: substring not found

3. 大小写转换(upper、lower、swapcase、capitalize和title)

str = "Hello World and my world"
print(str.upper())          # 把所有字符中的小写字母转换成大写字母
print(str.lower())          # 把所有字符中的大写字母转换成小写字母
print(str.swapcase())       # 把所有字符中的大写字母互换
print(str.capitalize())     # 把第一个字母转化为大写字母,其余小写
print(str.title())          # 把每个单词的第一个字母转化为大写,其余小写

结果

HELLO WORLD AND MY WORLD
hello world and my world
hELLO wORLD AND MY WORLD
Hello world and my world
Hello World And My World

4. 对齐(center,just和zfill)

print('一夜暴富'.center(10)+'*'*10)  #居中对应
print('一夜暴富'.rjust(10)+'*'*10)   #右对齐
print('一夜暴富'.ljust(10)+'*'*10)   #左对齐
print('一夜暴富'.zfill(10)+'*'*10)   #右对齐,不够用0填充

结果

一夜暴富   **********
      一夜暴富**********
一夜暴富      **********
000000一夜暴富**********

重在场景 zfill 的函数的妙处在于对用0填充补齐后的文本替换,以避免原文本中的空格被误操作,所以结合replace操作会更好的发挥它的作用。

5. 分割(split、splitlines和partition)

  • 方法一:str.split

split() 方法可以实现将一个字符串按照指定的分隔符切分成多个子串,通过该分割操作后,会返回一个列表

s = 'a b c.d ad'
print(s.split(' '))

结果

['a', 'b', 'c.d', 'ad']
  • 方法二:re.split
    使用多个字符进行字符串分割
#多字符切割需导入 re
import re
e = "123456@qq.com"
re.split('@|\.',e)

结果
['123456', 'qq', 'com']

splitlines()

  • 简介
    该函数不需要参数,默认以行(\n)为单位进行分割,返回值是一个包含分割后字符串的列表,列表的长度则取决于完整字符串的行数
  • 用途
    splitlines() 函数以行(\n)为单位对完整字符串进行分割,相当于函数split(’/n’)
  • 用法
    str.splitlines() 同 str.splite(‘\n’),若为True,保留分隔符。
mystr = 'hello\nworld\nand\nhello\npython'
print(mystr.splitlines())
print(mystr.split('\n'))
print(mystr.splitlines(True))

结果

['hello', 'world', 'and', 'hello', 'python']
['hello', 'world', 'and', 'hello', 'python']
['hello\n', 'world\n', 'and\n', 'hello\n', 'python']

partition
对字符串分割,返回三元组。若被切割字符为空,则被分割字符串放最前,后面2个字符串为空。

str='abcde'
print(str.partition('b'))
print(str.partition('f'))

结果

('a', 'b', 'cde')
('abcde', '', '')

6. 连接合并与替换(join,replace)

  • 连接一: “+”
s1='ab'
s2='cd'
S3='@'
s1+S3+s2

结果:
'ab@cd'

  • 连接一: join
  • 1.例一
s1='abcd'
s3='@'
s3.join(s1)

结果

'a@b@c@d'
  • 2.例二
s1=['ab','cd']
s3='@'
s3.join(s1)

结果

'ab@cd'

注意:join 是对字符串内容元素间增加对应内容,列表\元组、字典均适用,但数字格式的不适用哦,因为它实际中也没啥意义。

python字符串切片放入列表 python字符串切片用法_bc

  • replace
  • 把 字符串 中的 str1 替换成 str2,如果 count 指定,则替换不超过 count 次.

python字符串切片放入列表 python字符串切片用法_python_02



  • 注:这个跟步长为-1从末尾开始切片还是不一样的哦。如果想对字符串替换最后一个或几个,可考虑字符串步长-1切片反转,替换后再反转回去。

7. 判断(isidentifier、isspace、isalpha、isdecimal、isnumeric和isalnum等)

  • isidentifier: 关键字或 标识符1
print('if'.isidentifier())  # 关键字
print('break'.isidentifier())  # 关键字
print('while'.isidentifier())  # 关键字
print('_b'.isidentifier())  # 下划线开头
print('西安工程大学886'.isidentifier())  # 字符开头
print('886'.isidentifier())  # 数字开头
print('8a'.isidentifier())  # 数字开头
print(''.isidentifier())  # 空字符

结果

True
True
True
True
True
False
False
False
  • isspace:是否空格 。
print(''.isspace())
print(' '.isspace()) #空格
print(' ab'.isspace())

结果

False
True
False
  • isalpha:是否字母组合 。
print(''.isalpha())
print('abc'.isalpha()) #字母
print('abc.@'.isalpha())

结果

False
True
False
  • isdecimal:字符串是否只包含十进制字符。这种方法只存在于unicode对象。
a='123'
b='0o377'#8进制
c='123.123' #有小数点
print(''.isdecimal()) #空
print(a.isdecimal()) 
print(b.isdecimal()) 
print(c.isdecimal())

结果

False
True
False
False
  • isnumeric:是否数字类型。
a='123'
b='0o377'#8进制
c='123.123' #小数
print(''.isnumeric()) #空
print(a.isnumeric()) 
print(b.isnumeric()) 
print(c.isnumeric())

结果

False
True
False
False
  • isalnum: 是否字母或数字的组合。
a='123' #数字
b='0o377'#8进制
c='c123' #字母+数字
d='c123.123' #字母+数字+小数
print(''.isalnum()) #空
print(a.isalnum()) 
print(b.isalnum()) 
print(c.isalnum()) 
print(d.isalnum())

结果

False
True
True
True
False

8. 比较(<,>,==,!=max,min等)

  • 这个有些简单了哈,我只粗略说一下。针对个别示例如下:
a='s'
b='s'
print(a!=b)
print(a==b)

结果

False
True

9. 去除两端多余字符操作(strip,ltrip,rtrip)

  • strip: 用来去除头尾字符、空白符(包括\n、\r、\t、’ ',即:换行、回车、制表符、空格)
  • lstrip:用来去除开头字符、空白符(包括\n、\r、\t、’ ',即:换行、回车、制表符、空格)
  • rstrip:用来去除结尾字符、空白符(包括\n、\r、\t、’ ',即:换行、回车、制表符、空格)
  • 注意:这些函数都只会删除头和尾的字符,中间的不会删除。(一般都结合split()方法使用,返回一个列表list)

例:

a=' abc efg '
print(a.strip())
print(a.lstrip())
print(a.rstrip())

结果:

abc efg
abc efg 
 abc efg

10. 判断开头结尾字符串(startswith,endswith)

  • startsWith()方法用来判断当前字符串是否是以另外一个给定的子字符串“开头”的,根据判断结果返回 true 或 false。 string.startsWith(suffix[, start[, end]])
  • endswirh() 方法用来判断当前字符串是否是以另外一个给定的子字符串“结尾”的,根据判断结果返回 true 或 false。string.endswith(suffix[, start[, end]])
print(a.startswith(' ',0))  ##从第一个字符开始
print(a.startswith(' ',4))  ##从第5个字符开始
print(a.startswith(' ',1))  ##从第2个字符开始
print(a.endswith(' ',0))  ##从第0个字符开始
print(a.endswith(' ',-1))  ##从第最后一个字符开始

结果:

True
True
False
True
True

11. 字符串计数(count,len)

  • count:函数用于统计字符串里某个子字符串出现的次数。
  • 语法: S.count(sub[, start[, end]]) -> int
  • 参数
    sub: 搜索的子字符串。
    start: 可选参数,开始搜索的位置。
    end: 可选参数,结束搜索的位置。
  • 返回值
    子字符串在字符串中出现的次数。
    例:
str = 'abcabcd'
print('统计单个字符出现的次数:', str.count('a'))
print('统计单个字符出现的次数:', str.count('a', 1))
print('统计单个字符出现的次数:', str.count('a', 1, 3))
print('统计子字符串出现的次数:', str.count('ab'))
print('统计子字符串出现的次数:', str.count('df'))

结果:

统计单个字符出现的次数: 2
统计单个字符出现的次数: 1
统计单个字符出现的次数: 0
统计子字符串出现的次数: 2
统计子字符串出现的次数: 0
  • len:返回文本字符串中的字符数.
  • 语法格式为Len(text)
str = 'abcabcd'
print(len(str))

结果:

`7`

12. 字符串的编码与解码(encode,decode)

  • encode: 用于使用指定的编码格式对字符串进行编码。
  • 语法:encode(encoding=‘utf-8’, errors=‘strict’)
  • 参数
    encoding: 编码格式,默认为‘utf-8’。
    errors: 不同错误的处理方案,默认值为strict。
    strict:遇到非法字符就抛出异常。
    ignore:忽略非法字符。
    replace:用“?”替换非法字符。
    xmlcharrefreplace:使用 xml 的字符引用。
  • 返回值
    编码后的字符串。
    示例:
str = '我爱我的爸妈'
print('默认为utf-8编码:', str.encode())
print('utf-8明示编码:', str.encode('UTF-8'))
print('GBK编码:', str.encode('GBK', 'strict'))

结果:

默认为utf-8编码: b'\xe6\x88\x91\xe7\x88\xb1\xe6\x88\x91\xe7\x9a\x84\xe7\x88\xb8\xe5\xa6\x88'
utf-8明示编码: b'\xe6\x88\x91\xe7\x88\xb1\xe6\x88\x91\xe7\x9a\x84\xe7\x88\xb8\xe5\xa6\x88'
GBK编码: b'\xce\xd2\xb0\xae\xce\xd2\xb5\xc4\xb0\xd6\xc2\xe8'
  • decode:使用注册编码(codec)的编解码器解码字符串。它默认是默认字符串编码。
  • 语法:str.decode(encoding = ‘UTF-8’,errors = ‘strict’)
  • 参数
    encoding: 编码格式,默认为‘utf-8’。
    errors: 不同错误的处理方案,默认值为strict。
    strict:遇到非法字符就抛出异常。
    ignore:忽略非法字符。
    replace:用“?”替换非法字符。
    xmlcharrefreplace:使用 xml 的字符引用。
  • 返回值
    解码后的字符串。
    例:
str1=b'\xe6\x88\x91\xe7\x88\xb1\xe6\x88\x91\xe7\x9a\x84\xe7\x88\xb8\xe5\xa6\x88'
str2=b'\xce\xd2\xb0\xae\xce\xd2\xb5\xc4\xb0\xd6\xc2\xe8'
print('默认为utf-8编码:', str1.decode())
print('utf-8明示编码:', str1.decode('UTF-8'))
print('GBK编码:', str2.decode('GBK', 'strict'))

结果:

默认为utf-8编码: 我爱我的爸妈
utf-8明示编码: 我爱我的爸妈
GBK编码: 我爱我的爸妈

13. 字符串的枚举遍历(enumerate)

  • enumerate:用于获取字符串的索引与索引对应的字符
    -例:
s = 'Hello World!'
for i,m in enumerate(s):
    print(i,m)

结果

0 H
1 e
2 l
3 l
4 o
5  
6 W
7 o
8 r
9 l
10 d
11 !

  1. 标识符:在Python中凡是自定义的一些符和名称都叫标识符
    命名规则:
    1)只能包含字母、数字、下划线;
    2)数字不能开头;
    3)不能包含Python的关键字;
    4)标识符没有长度限制;
    5)区分大小写。
    命名的原则:见名知意,如:age,name
    常量名使用大写的单个单词或由下划线连接多个单词模块名
    函数名使用小写的单个单词或由下划线连接的多个单词
    类名使用大写字母开头的单个或多个单词 ↩︎