Python字符集问题
本节介绍python的string的用法。string内部是用unsigned int
来存储字符串。
Py_UCS4 unsigned int
所以python的字符串的存储空间是比较大的,现在python中的字符串统一使用utf来存储
与python有关的字符集
- python源码字符集 :utf 用ASCII码编译python可能会报错.
- ASCII字符集 GBK(2个ASCII码来存储一个汉字) GB2312 GBK和GB2312还是用ASCII码来存储其他文字
- UTF-8 UTF-16 UTF-32(UCS4) python注重简洁,所以内部全部使用
UTF-32
来存储
Python字符串操作
访问
str1 = "测试字符串001"
print(str1)
print(id(str1)) # 输出 2115250249600
str1 = "测试字符串002"
print(id(str1)) # 输出 2115250898064
由于python采用utf-32存储,所以不管是汉字还是英文数字等,在用下标进行访问时占位都只占1位
print(str1[2]) // 输出 "字"
print(str1[5]) // 输出 "0"
切片
下面的访问方式是python中特有的
# 3为开始位置,5为结束位置尾后位置
print(str1[3:5]) # 输出 "符串"
# 负数从结尾开始
print(str1[-3:-1]) # 00
#从倒数第3个取到第1个
print(str1[:-2]) # 测试字符串0
字符串转义
如果一个字符串里面有很多转义,只用在字符串开始加一个r
或R
,转义为普通字符串
print(r"dd\tdd\t") # 输出 dd\tdd\t
字符串拼接
多行字符串拼接的3种方式
a = "111" \
"222" \
"333"
print(a) # 输出111222333
a = "111 \
222 \
333"
print(a) # 输出111 222 333
a = """
aaa
bbb
ccc
"""
print(a)
"""
输出
aaa
bbb
ccc
"""
字符串的拼接还可以直接对两个字符串使用+
运算符:s1+s2
注意如果s1和s2较大,拼接操作会有较大时间开销,因为python相当于执行拷贝操作新生成一个字符串对象
对整型进行拼接
str(123)+str(100.9)
格式化字符串
%s
字符串%d
整数%c
字符 python里面没有char类型,可以通过chr()
进行转化%f
浮点数s4 = "格式化字符串 %s %d %c %f" % ("test",300,chr(66), 10.9 ) print(s4) # 输出 格式化字符串 test 300 B 10.900000
字符串长度
注意字符串不是内部存储的长度,而是整个的字数(汉字和英文都是记为1个数)