第008篇:字符串

2019-11-13  本文已影响0人  yydafx

菜鸟教程参考链接请点击

1、什么是字符串(str)

str1 = 'hello'
str2 = "hello"
str3 = '''hello'''
str4 = """hello"""
print(type(str1), type(str2), type(str3), type(str4)) 
# <class 'str'> <class 'str'> <class 'str'> <class 'str'>

2、字符串中的元素 -- 字符

1)字符串中的字符

原则上任何可以通过键盘输入或者从其他地方复制粘贴的所有的符号都可以作为字符
 a、普通字符:在字符串中能够代表符号本身的字符(没有特殊意义和特殊功能的符号)
 b、转义字符:在字符串中有特殊意义和特殊功能的符号的字符的组合,这些组合一般是以反斜杠()开头的

\n  -->  换行
        \'  -->  表示引号(')本身
        \t  -->  一个缩进(tab键)
        \\  -->  表示反斜杠(\)
        \(u4位的16进制数)  -->  编码字符(获取4位16进制数作为编码值对应的字符)    
        所有的转义字符的长度都是1
2)阻止转义:在字符串的最前面加r/R,何以让当前字符串所有的转义字符失效(所有的符号在字符串中都表示这个符号本身)
str1 = 'abc\n123'
print(str1)

str1 = 'abc\\n123'
print(str1)

str1 = 'abc\u4edf'
print(len(str1))
print(str1)

str1 = r'\tabc\'12344'
print(str1)

3、字符编码

3.1、字符和数字一一对应关系的就是编码表:ASCII码表,Unicode编码表(python)

1)ASCII编码表 --> 在计算机中采用一个字节保存一个字符(总共只有128个字符),字符包含了所有的字母、数字和美国常用符号

    0-9:编码值从48开始依次增加
    大写字母编码值:从65开始依次增加
    小写字母编码值:从97开始依次增加
    大写字母编码值与小写字母编码值不是紧挨着

2)Unicode编码表是ASCII码表的扩展,包含了世界上所有的国家、所有的语言对应的符号(总共有65536个符号)

    ASCII:0 - 127
    中文编码值范围:0x4e00 - 0x9faf
3.2、编码字符:\u4位16进制编码值
print('\u4e00')
3.3、chr(编码值) -- 直接获取编码值对应的字符
num = 0
for i in range(0x4e00, 0x9fa5+1):
    print(chr(i), end=' ')
    num += 1
    if num % 30 == 0:
        print('')
3.4、ord(字符) --> 获取指定字符对应的编码值
print(hex(ord('杨')))
print(hex(ord('毓')))
print(hex(ord('德')))

4、字符串相关操作

4.1、查
str1 = 'hello python'
print(str1[-1])  # n

  2)切片:字符串[开始下标:结束下标:步长]

str1 = 'hello python'
print(str1[1:-1:2])  # el yh
print(str1[:3:-1])  # nohtyp o

  3)遍历
  for 下标, 元素 in enumerate(序列):
    循环体

for index, item in enumerate(str1):
    print(index, item)
4.2、相关的操作

1)运算符:a、+,*

str1 = 'abc'
str2 = '123'
print(str1 + str2)
print(str1 * 2)

# b、==, !=
print('abc' == 'abc')  # True
print('abc' == 'acb')  # False

2)>, <, >=, <=

判断字符是否是小写字母:'a' <= char <= 'z'
判断字符是否是大写字母:'A' <= char <= 'Z'
判断字符是否是字母:'a' <= char <= 'z' or 'A' <= char <= 'Z'
判断字符是否是中文:'\u4e00' <= char <= '\u9fa5'
判断字符是否是数字:'0' <= char <= '9'
str1 = 'abc'
str2 = 'b'
print(str1 > str2)  # False
3)in / not in

字符串1 in 字符串2 --> 判断字符串2中是否包含字符串1

str1 = 'abc 123'
str2 = 'b'
print(str2 in str1)  # True
print('abc' in str1)   # True
print('ac' in str1)   # False
4)相关函数:len,str,sorted,reversed

a、len(字符串)

print(len('\tabd\n123'))    # 8
print(len(' abd\n13'))    # 7
print(len(' '))  # 1

b、str(数据) 所有的数据都可转为字符串;直接将数据的打印值加引号
c、sorted(字符串) --> 按字符编码值排序;

str1 = 'python12H'
print(sorted(str1)) # ['1', '2', 'H', 'h', 'n', 'o', 'p', 't', 'y']

5、格式字符串

5.1、格式占位符

 a、语法:包含格式占位符的字符串 %(值1,值2,值3,...)
 b、说明:

    格式占位符:有哪些是固定的,使用的时候和字符串中变化的数据类型相关
        %s  --  字符串(任何类型都可以用%s占位)
        %d  --  整数;
        %-Nd  --  整数;N约束数字最后的长度,如果不够后面补空格
        %Nd  --  整数;N约束数字最后的长度,如果不够前面补空格
        %f --  浮点数:小数后面保留6位小数
        %.Nf --  浮点数:N约束小数点N后的小数位数(四舍五入)
        %c  --  字符
    %  -->  固定写法
    ()  -->  固定写法;如果值的个数是1可以省略
    值  -->  任何有结果的表达式
name = input('请输入姓名:')
print('你好%s' % name)
print('%c' % 97)    # a
5.2、format
print('{}大帅哥今年才{}岁'.format('杨', 18))

用法2:{N} -- N从0开始依次增加,分别表示format中的第0,1,2,3,..个值

print('{1}大帅哥今年才{0}岁,他的女朋友也是{0}岁'.format(18, '杨'))

用法3:{key}

print('{name}大帅哥今年才{age}岁,他的女朋友也是{age}岁'.format(age = 18, name = '杨'))

用法4:用列表元素给占位符赋值

list1 = [12,23,32,21]
print('{0[1]}, {1}, {0[3]}'.format(list1, '张三'))

用法5:用字典的值给占位符赋值

student = {'name': '旺财', 'age': 2, 'id': 'D001', 'score': 34}
print('{name}今年{age}岁了, 学号是{id}, 考了{score}分'.format(**student))
6:其他的用法

约束小数位数

print('圆周率:{:.2f}'.format(3.1415926))

约束小数宽度

print('整数:{:0<4d}'.format(12))
print('整数:{:0>4d}'.format(12))

分割

print('大的整数:{:,}'.format(1000000000))

百分比

print('百分比:{:.2%}'.format(0.123))

6、字符串的相关方法

capitalize

str1 = 'python'

new_str1 = str1.capitalize()
print(str1, new_str1)

center/ljust/rjust/zfill

print('abc'.center(7, '+'))  # ++abc++
print('abc'.ljust(7, '+'))  # abc++++
print('abc'.rjust(7, '+'))  # ++++abc
print('abc'.zfill(7))  # 0000abc

count

str1 = 'how are you? I am find! Thank you!'
print(str1.count('you'))  # 2
print(str1.count('a'))  # 3
print(str1.count('a', 0, 16))  # 2

endswith

str1 = 'python'
print(str1.endswith('n'))   # True
print(str1.startswith('p'))   # True

find/index

str1 = 'how are you? I am find! Thank you!'
print(str1.index('a'))  # 4
print(str1.find('a'))  # 4

join

str1 = 'abc'
str2 = '+'.join(str1)
print(str2)
str3 = ['name', 'age', 'sex']
print(''.join(str3))

replace/ maketrans和translate 字符串替换


上一篇 下一篇

猜你喜欢

热点阅读