Python——字符串的基本操作

发布时间:2024年01月19日

?、 创建

s1 = 'lenovo'
s2 = "QF"
s3 = """hello lenovo"""
s4 = '''hello 亮'''
s5 = """hello
shark
"""
s6 = '''hello
world'''

?、简单使?

????????1.\?转义符?

testimony = 'This shirt doesn\'t fit me'
words = 'hello \nshark'

????????2.+?拼接?

In [1]: file_name= "成功的21个信念"

In [2]: suffix = '.txt'

In [3]: file_name = file_name + suffix

In [4]: file_name
Out[4]: '成功的21个信念.txt'

????????拼接只能是 字符串和字符串进?操作,不可以? 字符串和 ?个字符串类型的对象相加

????????3.*?复制

In [6]: "-" * 10
Out[6]: '----------'

In [7]: print('*' * 10)
**********

三、取值和切?

????????1.字符串 是?Python?中的?个 序列类型的数据结构

????????存放的数据,在其内是有序的。

????????序列类型的特点:

  • ????????序列?的每个数据被称为序列的?个元素
  • ????????元素在序列?都是有个??的位置的,这个位置被称为索引或者叫偏移量,也有叫下标的, 从?0?开始,从左到右依次递增
  • ????????序列中的每?个元素可以通过这个元素的索引来获取到
  • ????????获取到序列类型数据中的多个元素需要?切?的操作来获取

????????2.通过索引取值,获取单个元素

In [10]: s1 = "shark"

In [11]: s1[0]
Out[11]: 's'

In [12]: s1[-1]
Out[12]: 'k'

In [13]: s1[3]
Out[13]: 'r

????????3.?切?,获取多个元素

[start:end:step]分片
#start 永远是起始索引号
#end   永远是终止索引号
#step  是可选的步长
  • ? ? ? ? 分片操作只包含位于起始索引号位置的元素
  • ? ? ? ? 不包含位于终止索引号的位置的元素
  • ? ? ? ? 同时,起始和终止的意义都是针对于从左向右的顺序来定义的?

????????1.?般操作?

# 使?切?获取多个元素
In [15]: s1[0:3]
Out[15]: 'sha'

# 起始和结尾的索引号可以省略
In [16]: s1[:3]
Out[16]: 'sha'

In [17]: s1[1:]
Out[17]: 'hark'

# 索引可以使? 负数
In [18]: s1[2:-1]
Out[18]: 'ar'

????????2.使?步??

  • ????????步?就是每数?个取?个的意思
  • ????????步?是正数时,是从左向右开始操作
  • ????????步?是负数时,是从右向左操作
In [19]: s2 = 'abcdefg'

In [20]: s2[::2]
Out[20]: 'aceg'

In [21]: s2[::-1]
Out[21]: 'gfedcba'

In [22]: s2[::-2]
Out[22]: 'geca'

四、字符串?法

????????1.统计序列数据的?度?

????????就是获取?个序列数据的元素个数,这个适?于所有的序列类型的数据,?如 字符串、列表、元组。

# 获取字符串的?度,包含空格和换?符
In [25]: s3 = "a \n\t"

In [26]: len(s3)
Out[26]: 4
  • ????????\n?是?个换?符
  • ?????????\t?是?个?Tab?键?

????????2.in?成员判断?

In [39]: line = 'Size: 8192 MB'

In [40]: if 'Size' in line:
    ...: print(line)
    ...:
 Size: 8192 MB

????????注意: 空的字符串总是被视为任何其他字符串的?串,因此"" in "abc"?将返回?True。

????????3.strip()?去除字符串两端的空?字符(空格、\t、?\n)

Out[41]: line = ' Size: 8192 MB'

In [42]: line.strip()
Out[42]: 'Size: 8192 MB'

????????4.split()?分割?

????????默认使?空?字符作为分隔符(空格、\t、?\n) 和?shell?中的?awk??样道理

In [47]: line
Out[47]: ' Size: 8192 MB'

In [48]: line.split()
Out[48]: ['Size:', '8192', 'MB']

In [49]: s
Out[49]: '\tab\n'

In [50]: s.split()
Out[50]: ['ab']


可以指定分隔符
In [51]: line.split(':')
Out[51]: [' Size', ' 8192 MB']

In [52]: line.split(': ')
Out[52]: [' Size', '8192 MB']

????????5.strip()?移除字符串两端的空?字符**?

In [71]: line = ' Size: 8192 MB'

In [72]: line.strip()
Out[72]: 'Size: 8192 MB'


strip() 返回的是字符串,所以可以连续操作
In [73]: line.strip().split(': ')
Out[73]: ['Size', '8192 MB']

In [74]: line
Out[74]: ' Size: 8192 MB'

In [75]: k, v = line.strip().split(': ')

In [76]: k
Out[76]: 'Size'

In [77]: v
Out[77]: '8192 MB'

????????6.replace()?替换?

In [65]: line = '  <strong>10、命运在????,?不是在别?的嘴?</strong></p>'

In [66]: line.strip() ## 先去除两端空?字符
Out[66]: '<strong>10、命运在????,?不是在别?的嘴?</strong></p>'

In [67]: line.strip().replace('strong>', '') ##将字符串 strong> 替换为空
Out[67]: '<10、命运在????,?不是在别?的嘴?</</p>'

In [68]: line.strip().replace('strong>', '')[1:-6]
Out[68]: '10、命运在????,?不是在别?的嘴?'

????????7.startswith()?判断字符串以什么为开头?

In [85]: line = 'Locator: DIMM_A2'

In [86]: line.startswith("Locator:")
Out[86]: True

????????8.endswith()?判断字符串以什么为结尾?

In [87]: line = 'Size: 8192 MB'

In [88]: line.endswith('MB')
Out[88]: True

五、 字符串的判断

In [1]: s = '123'

In [2]: s.isdigit() # 判断是否是纯数字
Out[2]: True

In [3]: s1 = '123adb' 

In [4]: s1.isalnum() # 判断是否是数字和字?
Out[4]: True

In [5]: s2 = 'adb'

In [6]: s2.isalpha() # 判断是否是纯字?
Out[6]: True

In [7]: s2.encode() # 转换为?进制 bytes 类型
Out[7]: b'adb'

In [8]: s4 = "亮"
In [9]: s4.encode() # 转换为?进制 bytes 类型,默认编码 utf-8
Out[9]: b'\xe4\xba\xae'

In [16]: b = s4.encode()

In [17]: b.hex() # bytes 转换成 16 进制
Out[17]: 'e4baae'
 
In [18]: b.decode() # bytes 转换成 str,默认编码utf-8
Out[18]: '亮'

?

?

?

?

?

?

文章来源:https://blog.csdn.net/weixin_73783595/article/details/135705977
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。