字符串和字符的相关语法

字符串

字符串和字符

  1. 什么是字符串

字符串是容器型数据类型,将单引号或者双引号作为容器的标志,元素不需隔开:‘元素1元素2元素3…’

字符串是不可变的(不支持增删改);字符串是有序的(支持下标操作)

字符串中的元素:只能是文本符号(所有计算机能够表达出来的符号都可以作为字符串的元素),一个符号就是一个元素

:‘湖北’, ‘abcn’,’!@#$%’, ‘↑♦’, ‘123456’

字符串中每一个独立的元素又叫字符;python中只有自负的概念没有字符对应的数据类型

空串:

str1 = ''
str2 = ""
str3 = ''''''
str4 = """"""
print(type(str1), type(str2), type(str3), type(str4))

非空字符串:

str11 = 'abc'
str22 = "你好"
str33 = '''你好,hello'''
str44 = """123,hai"""
  1. 字符(字符串中的元素)

字符串中的字符分两种:普通字符、转义字符

1)普通字符 – 除了转义字符以外的字符

2)转义字符 – 在指定符号前加 \ 用来表示一些特殊功能和特殊意义

\n - 换行
\t - 制表符(相当于按tab键)
\' - 单引号
\" - 双引号
\\ - 反斜杠

编码字符:\u4位的十六进制数

str1 = '\tabc\n123'
print(str1)
# 	abc
# 123
str2 = 'abc\'123'
str3 = "abc\"123"
str4 = 'abc\\n123'
print(str2)    # abc'123
print(str3)    # abc"123
print(str4)    # abc\n123

注意:计算字符串长度的时候,一个转义字符的长度是1

3)阻止转义(r语法)

在字符串的最前面加r或R,那么这个字符串中所有的转义字符都无效

str6 = r'\tabc\n123\u4e00'
print(str6)    # \tabc\n123\u4e00

应用:打印windows路径或者用于正则表达式

path = r'c\nan\temp'
print(path)   # c\nan\temp

字符编码

1.什么是字符编码

计算机在存储数据的时候只能存数字,而且存的是是数字的补码

为了能够让计算机存储文本数据,给每个字关联了一个固定的数字,用来对这个数字进行存储。每个字符关联的那个数字就是这个字的编码值。

编码表

  1. ASCII码表:用一个字节来对字符进行编码(码值范围:0~~~127)

1)数字在字母的前面(字符0~~字符9的编码值连续递增)

2)大写字母在小写字母前面(字母之间是连续的)

  1. 大写字母和小写字母之间还有其他的符号(不连续)
  1. Unicode编码表

    Unicode编码表示对ASCII表的扩展(Unicode编码表中包含了ASCII中所有的符号)

    Unicode编码表中包含了世界上所有的国家所有民族的所有语言符号,共65536个

中文范围:0x4e00~~0x9fa5

1)chr函数

chr(编码值) – 获取指定编码值对应的字符

print(chr(ox4e66))   # 书

for x in range(0x0F00, 0x0F50):  # 打印字符
    print(chr(x), end=',')
print()

# 打印所有的中文
count = 0
for x in range(0x4e00, 0x9fa5):
    print(chr(x), end=' ')
    count += 1
    if count % 40 == 0:
        print()
print()

2)ord函数

ord(字符) – 获取指定字符对应的编码值

print(hex(ord('二')),hex(ord('大')),hex(ord('爷')))  
# 0x4e8c 0x5927 0x7237

字符串相关操作

1.获取字符串中的元素(获取字符)

字符获取元素和列表获取元素的语法一样

str1 = 'how are you!'

# 1)获取单个元素
print(str1[2])
print(str1[-1])

# 2) 切片
print(str1[1:5])    # 'ow a'
print(str1[-3::-1])  # 'oy era woh'

# 3) 遍历
for x in str1:
    print(x)

for index in range(len(str1)):
    print(str1[index])

2. +,*

字符串1 + 字符串2

字符串 *N N * 字符串

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

3.==,!=

print(str1 == 'abc')     # True
print(str1 == 'bac')     # False

4. >,<,>=,<=(针对两个字符串的比较)

两个字符串的比较大小:比较的是第一组不一样的字符的编码值

str3 = 'zABC'
str4 = 'z1bcd'
print(str3 > str4)     # True
"""
应用:
判断是否是数字字符: '0' <= char <= '9'
判断是否是小写字母:'a' <= char <= 'z'
判断是否是大写字母:'A' <= char <= 'Z'
判断是否是字母:'a' <= char <= 'z' or 'A' <= char <= 'Z'
判断是否是中文字符: '\u4e00' <= char <= '\u9fa5'
"""
# 练习1:输入一个字符串,统计字符串中字母和中文的个数
str6 = 'hello, 你好吗?'
count1 = 0
count2 = 0
for x in str6:
    if 'a' <= x <= 'z' or 'A' <= x <= 'Z':
        count1 += 1
    elif '\u4e00' <= x <= '\u9fa5':
        count2 += 1
print('字母的个数:', count1, '中文的个数:', count2)
# 练习2:判断输入的字符串是否是纯数字字符串
str7 = '728373'
for x in str7:
    if not '0' <= x <= '9':
        print('不是纯数字字符串')
        break
else:
    print('是纯数字字符串')

5. in 和 not in

字符串1 in 字符串2 – 判断字符串1是否是字符串2的子串

print('abc' in 'acbmn')   # False
print('abc' in 'abcmn')   # True
print('m' in 'abcmn')     # True

6. 相关函数

max/min/sorted/reversed等,这些函数都适合用于字符串

len(字符串) – 求字符串的长度

str(数据) – 将指定数据转换成字符串

  1. 所有的数据都能转换成字符串
  2. 将数据的打印值作为字符串的内容
str1 = r'\tabc'
print(len(str1))    # 5

num = 100
str(num)        # '100'

str([1, 2, 3])   # '[1, 2, 3]'

字符串的相关方法

  1. center/rjust/ljust/zfill
字符串.center(长度,填充字符)   -- 产生一个新的字符串:长度指定,原字符串在中间,左右用指定字符填充
字符串.rjust(长度, 填充字符)   -  产生一个新的字符串:长度是指定的长度,原字符串在新字符串的最右边,左边用指定字符填充
字符串.zfill(长度) == 字符串.rjust(长度, '0')
字符串.ljust(长度, 填充字符)   -  产生一个新的字符串:长度是指定的长度,原字符串在新字符串的最左边,右边用指定字符填充
str1 = 'abc'
str2 = str1.rjust(6, '0')
str3 = str1.zfill(6)
str4 = str1.ljust(6, '*')
print(str2, str3, str4)  # 000abc 000abc abc***
# 练习1: 给任意一个商品的数字编号值,转换成固定格式的商品编码: GDXXXX  -> GD0001, GD0012,....
num = 2   # 0034
num_str = 'GD'+str(num).zfill(4)
print(num_str)

2. replace

字符串1.replace(字符串2, 字符串3)   -  将字符串1中所有的字符串2全部替换成字符3
字符串1.replace(字符串2, 字符串3, N)   -  将字符串1中的前 N 个字符串2替换成字符串3
str1 = 'how are you? i am fine, Thank you!'
new_str = str1.replace('o', '*')
print(new_str)     # h*w are y*u? i am fine, Thank y*u!

new_str = str1.replace('o', '+', 2)
print(new_str)     # h+w are y+u? i am fine, Thank you!

new_str = str1.replace('you', 'me')
print(new_str)     # how are me? i am fine, Thank me!

猜你喜欢

转载自blog.csdn.net/weixin_48491902/article/details/106874117