Python中的字符串类型string
在Python中,字符串类型为内置数据类型之一,用于表示文本类型的数据。Python的字符串类型是不可变的,这意味着你不能改变一个字符串的值。Python的字符串类型有很多内置方法,可用于字符串的各种操作,如切片,查找,替换等。
创建字符串
Python中创建字符串的方法有两种:用单引号(')或双引号(")将字符围起来或使用三引号(''')或三双引号(""")
#使用单引号
string1 = 'Hello World'
#使用双引号
string2 = "Hello World"
#使用三引号
string3 = '''Hello
World'''
#使用三双引号
string4 = """Hello
World"""
字符串的常用操作
字符串拼接
Python中的字符串拼接可以使用加号(+)来实现,也可以使用join()方法来实现。
str1 = "Hello"
str2 = "World"
#直接使用加号拼接字符串
result = str1 + " " + str2
print(result)
#使用join()方法拼接字符串
result2 = " ".join([str1,str2])
print(result2)
字符串格式化
字符串格式化是将变量插入到一个字符串中,通常使用百分号(%)格式化或字符串模板({})来实现。
#使用百分号(%)格式化字符串
name = "Lucy"
age = 18
result = "My name is %s and I am %d years old." %(name, age)
print(result)
#使用字符串模板({})格式化字符串
name = "Lucy"
age = 18
result2 = "My name is {} and I am {} years old.".format(name, age)
print(result2)
字符串切片
Python中可以使用切片来截取字符串的一部分,也可以通过这种方式修改字符串。字符串的切片操作使用下标来表示切片的起始和终止位置,下标从0开始计数。
str1 = "Hello World"
#截取前5个字符
result = str1[0:5]
print(result)
#从第6个字符开始,直到最后一个字符
result2 = str1[6:]
print(result2)
#反转字符串
result3 = str1[::-1]
print(result3)
示例
代码示例:字符串反转
def reverse_string(text):
return text[::-1]
print(reverse_string("Hello World"))
print(reverse_string("Python String"))
bytes类型
Python中的bytes类型是一种类似于字符串的不可变序列类型,用于存储二进制数据。bytes类型的值由小于256的整数组成,每个整数使用一个字节(8位)的内存空间存储。Python 3.x 起,bytes类型是一个内置类型,Python 2.x 版本中的二进制数据类型是 str。
可以使用bytes()函数或者字节字面量表示bytes类型的值。使用字节字面量时,需要在值的前面加上b。
#使用bytes()函数创建bytes类型
data = bytes([0x48, 0x65, 0x6c, 0x6c, 0x6f])
print(data)
#使用字节字面量创建bytes类型
data = b"Hello bytes"
print(data)
bytes类型的常用操作
字节串的转换
bytes类型与字符串类型之间可以相互转换,可以使用encode()和decode()方法来实现。
#字符串转bytes类型
text = "Hello World"
data = text.encode('utf-8')
print(data)
#bytes类型转字符串
text2 = data.decode('utf-8')
print(text2)
字节串切片
bytes类型的切片操作和字符串类型类似,只是切片的结果也是bytes类型。
data = b"Hello World"
result = data[0:5]
print(result)
示例
代码示例:计算文件的md5值
import hashlib
def calc_md5(file_name):
with open(file_name,'rb') as f:
data = f.read()
md5 = hashlib.md5(data).hexdigest()
return md5
print(calc_md5('test.png'))
bytearray类型
bytearray类型类似于bytes类型,可以存储二进制数据,不过bytearray类型的值是可变的。bytearray类型的操作和bytes类型差不多,只是支持任意位置的修改。
创建bytearray类型
bytearray类型创建方式与bytes类型类似,可以使用bytearray()函数或者字节字面量来创建。
#使用bytearray()函数创建
data = bytearray([0x48, 0x65, 0x6c, 0x6c, 0x6f])
print(data)
#使用字节字面量创建
data2 = bytearray(b"Hello bytearray")
print(data2)
bytearray类型的常用操作
字节串的转换
bytearray类型与字符串类型之间也可以相互转换,与bytes类型类似,可以使用encode()和decode()方法实现。
#字符串转bytearray类型
text = "Hello World"
data = bytearray(text.encode('utf-8'))
print(data)
#bytearray类型转字符串
text2 = data.decode('utf-8')
print(text2)
修改字节
bytearray类型支持修改任意位置的字节。
data = bytearray(b"Hello World")
data[0] = 0x68 #修改第一个字节,从'H'变成'h'
print(data)
#在指定位置插入字节
data.insert(5, 32) #在第5个字节(空格前)的位置插入一个空格
print(data)
#删除指定位置的字节
del data[5] #删除第5个字节,即空格
print(data)
示例
代码示例:通过bytearray类型修改图片的像素
from PIL import Image
def modify_image(file_name):
with Image.open(file_name) as img:
data = bytearray(img.tobytes())
for i in range(0, len(data), 4):
data[i] = 255 - data[i]
img2 = Image.frombytes(img.mode, img.size, bytes(data))
img2.save('modified.png')
modify_image('test.png')
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解python string类型 bytes类型 bytearray类型 - Python技术站