2_字符串

目录

字符串

字符串基本介绍

字符串的创建

转义字符

字符串拼接

字符串复制

打印不自动换行

字符串的键盘输入

将数字转化为字符串

字符串中某一位的表示

字符串的替换

提取子字符串

字符串的分割与合并

字符串驻留机制

检测字符是否在字符串中

字符串的格式化

可变字符串

其他操作


  • 字符串

字符串基本介绍

Python 中字符的基本类型是字符串。

编码是 16 位的 Unicode 编码,ASCII 码是它的子集。可以表示所有的字符。

>>> ord('A')              # ord() 可以把任一字符转化为对应得实际值数
65

>>> chr(66)               # chr() 可以把任意的十进制数字转化为对应的字符
'B'                       # 括号里面不能加引号

>>> chr('65')
Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    chr('65')
TypeError: an integer is required (got type str)

字符串的创建

>>> a = 'abcd'       # 字符串的创建可以用单引号,也可以双引号
>>> a
'abcd'

>>> b = "I'm a student!"    # 注意,如果字符串中有引号,使用和其不相同的
>>> b
"I'm a student!"

>>> resume = '''name = "Tom"            # 创建多行字符串,用三个单引号或双引号
age = 15
company = "CCNU"'''
>>> resume
'name = "Tom"\nage = 15\ncompany = "CCNU"'
>>> c= ''                # Python 中允许有空字符串,不能有空格
>>> len(c)               # len() 用于检查字符串长度
0

>>> d = ' '              # 空格长度也算
>>> len(d)
1

转义字符

>>> a = 'I\'am a student'          # \\  \'  \"  在字符串中表示  \  '  "
>>> a
"I'am a student"                   # \n 换行   \ 续行符

字符串拼接

>>> a = 'aaa' +  'bbb'        # 字符储拼接的两种方式
>>> a
'aaabbb'
>>> b = 'aaa''bbb'
>>> b
'aaabbb'

字符串复制

>>> a = 'Abc' * 3        # 字符串的复制
>>> a
'AbcAbcAbc'

打印不自动换行

Python 中 print 末尾自动换行

>>> print('ddd', end='###' )            # 使用 end= 来代替末尾的换行符
ddd###
>>> print('ddd', end="###")
ddd###

字符串的键盘输入

>>> my_name = input("Your name is ")
Your name is Luyaoyi
>>> my_name
'Luyaoyi'

将数字转化为字符串

>>> str(132)
'132'

字符串中某一位的表示

>>> a = 'abcdefghijklmnopqrstuvwxyz'
>>> a[0]                    # 正向,类似于 C 中的数组
'a'

>>> a[-26]                  # 反向,注意右边第一个字符的位置是 -1
'a'
>>> a[-27]
Traceback (most recent call last):
  File "<pyshell#9>", line 1, in <module>
    a[-27]
IndexError: string index out of range

字符串的替换

>>> a = 'abcd'
>>> a = a.replace("c","m")
>>> a
'abmd'

Python 中不支持改变已经定义的字符串,这里的替换是指 生成了一个新的对象 abmd ,然后 a 指向新的对象

>>> a[3] = '5'
Traceback (most recent call last):
  File "<pyshell#25>", line 1, in <module>
    a[3] = '5'
TypeError: 'str' object does not support item assignment

提取子字符串

>>> a = 'abcdefg'
>>> a[:]            # 提取全部字符串
'abcdefg'

>>> a[1:5]          # 提取 a[1] 到 a[5] 但不包括 a[5] 的字符串,包头不包尾
'bcde'

>>> a[1:5:2]        # 步长为 2 取字符
'bd'

>>> a[:2]           # 从头开始到第二个数
'ab'
>>> a[2:]           # 从第二个数开始到最后
'cdefg'

>>> a[:-3]          # 负值时和上面一样
'abcd'
>>> a[-5:-2]
'cde'

>>> a[::-1]         # 逆向提取
'gfedcba'

>>> a[:400]         # 超过范围不会报错
'abcdefg'

字符串的分割与合并

>>> a = 'to be or not to be'

>>> a.split()                               # 将空格指定为分割符,存储到列表中
['to', 'be', 'or', 'not', 'to', 'be']

>>> a.split("to")                           # 将 to 指定为分隔符
['', ' be or not ', ' be']
>>> a = ["aaa", "bbb", "ccc"]    
>>> '#'.join(a)                  # 用冒号中的符号拼接列表 a 中的不同对象
'aaa#bbb#ccc'                    # 相比于加号,更推荐这一种方式                        

字符串驻留机制

字符串中仅包含 _ ,数字,字母时,启动驻留机制,即两个不同的变量会引用同一个对象

>>> a = 'a_aa'
>>> b = 'a_aa'
>>> a is b
True

>>> a = 'a#b'
>>> b = 'a#b'
>>> a is b
False

检测字符是否在字符串中

>>> a = 'abcde'
>>> 'a' in a
True

>>> 'ddd' not in a
True

字符串的格式化

# 第一种,需要按顺序,这里的 {} 作为占位符
>>> a = 'my name is {0}, my age is {1}, {0} is a good boy!'
>>> a.format("Lu",25)
'my name is Lu, my age is 25, Lu is a good boy!'

# 第二种,不用在意顺序
>>> a = 'my name is {name}, my age is {age}, {name} is a good boy!'
>>> a.format(age = 25, name = 'Lu')
'my name is Lu, my age is 25, Lu is a good boy!'

# 更多细节,冒号后面增加填充对齐命令 
# ^ 居中  < 左对齐  > 右对齐 
# 冒号后第一位表示填充字符,只能有一位,第二位表示对齐方式,第三位表示显示长度
>>> a = 'my name is {0:*^8}, my age is {1}'   
>>> a.format("Lu",25)                        
'my name is ***Lu***, my age is 25'            # 8位字符,* 号填充,居中显示

可变字符串

# io 的使用
>>> import io
>>> b = io.StringIO(a)           # 注意大小写 
>>> b.getvalue()                 # 输出新的字符串
'abcdefg'
>>> b.seek(3)                    # 定位到 b[3]
3
>>> b.write('m')                 # 把 b[3] 变成 m
1
>>> b.getvalue()
'abcmefg'

其他操作

>>> a = 'abcdefg'                    
>>> len(a)                           # 长度
7

>>> a.startswith('a')                # 判断是否以某些字符开头
True
>>> a.startswith('abc')
True
>>> a.endswith('d')                  # 是否以某些字符结尾
False

>>> a.find('b')                      # 第一次出现某字符的位置
1

>>> a = 'aabbccbb'
>>> a.rfind('b')                     # 最后一次出现某字符的位置
7
>>> a.count('b')                     # 测试某字符出现次数
4
>>> a.isalnum()                      # 测试是不是全是字母和数字
True
>>> a = '   *aaa*   '            
>>> a.strip()                    # 去除首尾括号中的字符,括号中没有元素代表空格
'*aaa*'                            
>>> a.strip("*")                 # a 所引用的对象没有改变
'   *aaa*   '

>>> a = '*abc*'            
>>> a.lstrip('*')                # 去除左边的 *
'abc*'
>>> a.rstrip('*')                # 去除右边的 *
'*abc'
>>> a = 'aa BB cc'

>>> a.capitalize()      # 首字母大写,别的全小写
'Aa bb cc'

>>> a.title()           # 每个单词首字母大写,别的小写
'Aa Bb Cc'

>>> a.upper()           # 每个字母都大写
'AA BB CC'

>>> a.lower()           # 每个字母都小写
'aa bb cc'

>>> a.swapcase()        # 大变小,小变大
'AA bb CC'
>>> a = 'aaa'

>>> a.center(10, '*')        # 字符串变为十个字符用 * 填充,居中显示
'***aaa****'

>>> a.center(10)             # 空格填冲,居中显示
'   aaa    '

>>> a.ljust(10, '*')         # 左对齐
'aaa*******'

>>> a.rjust(10, '*')         # 右对齐
'*******aaa'

a.isalnum()    a是否为字母或数字

a.isalpha()    a是否全字母(包括汉字)

a.isdigit()      a是否全数字

a.isspace()    a是否为空白符

a.isupper()     a是否全大写

a.islower()     a是否全小写

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值