详解python string类型 bytes类型 bytearray类型

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技术站

(0)
上一篇 2023年6月5日
下一篇 2023年6月5日

相关文章

  • Python2.7版os.path.isdir中文路径返回false的解决方法

    下面是详细的讲解以及示例说明。 问题背景 在Python2.7版本中,使用os.path.isdir()判断中文路径是否是一个目录的时候,会出现返回false的情况。 例如: import os path = u’/Users/你好/test’ print(os.path.isdir(path)) # 返回False 上述代码在Python 2.7中执行后输…

    python 2023年6月2日
    00
  • 对NumPy数组进行比较和过滤

    当我们使用NumPy数组时,我们可能面临比较和过滤数据的任务。在本篇攻略中,我将详细介绍如何使用NumPy进行数组比较和数据过滤。 1. 比较数组 可以使用NumPy进行数组比较。当我们使用数组比较时,我们可以比较两个数组中的每个元素。如果两个数组中的元素相同,则返回True,否则返回False。 以下是比较两个数组的示例: import numpy as …

    python-answer 2023年3月25日
    00
  • Python常用的json标准库

    下面是Python常用的json标准库的完整攻略。 什么是JSON? JSON 全称为 JavaScript Object Notation,是一种轻量级数据交换格式。它基于 ECMAScript 的一个子集。 JSON 格式最初由 Douglas Crockford 发明,它是一种语法简洁清晰的数据格式,并且易于读写,同时也易于机器解析和生成。 JSON …

    python 2023年6月3日
    00
  • Python类绑定方法及非绑定方法实例解析

    Python类中的方法分为绑定方法和非绑定方法,这两种方法的调用方式、作用和实现方式都不同,下面详细讲解它们的区别及用法。 绑定方法 绑定方法是绑定到类的实例上的方法,可以类比面向对象中的普通方法。调用绑定方法时会把类的实例作为第一个参数自动传入方法中,并且第一个参数通常被命名为self,用于引用实例的属性和方法。 示范1:定义并使用绑定方法 以下是一个简单…

    python 2023年6月2日
    00
  • 手把手教你怎么用Python实现zip文件密码的破解

    现在我来为你详细讲解如何用Python实现zip文件密码的破解。 1. 准备工作 在开始之前,你需要安装 pyzipper 库来对 zip 文件进行操作,以及 argparse 库来处理命令行参数。你可以使用以下命令来安装这两个库: pip3 install argparse pyzipper 2. 破解过程 2.1 密码破解函数 我们将使用一个名为 bru…

    python 2023年6月3日
    00
  • python正则表达式之re.match()与re.search()的用法及区别

    以下是“Python正则表达式之re.match()与re.search()的用法及区别”的完整攻略: 一、问题描述 在Python中,我们可以使用re模块中的match()函数和search()函数来匹配字符串。本文将详细讲解Python正则表达式中match()函数和search()函数的用法及区别。 二、解决方案 2.1 match()函数和searc…

    python 2023年5月14日
    00
  • python数字图像处理像素的访问与裁剪示例

    下面是关于Python数字图像处理像素的访问与裁剪的攻略。 标题 1. 像素的访问 在Python中,我们可以使用Pillow库来处理数字图像。当我们需要访问数字图像中的像素时,我们可以使用getpixel()方法。 from PIL import Image # 加载图片 img = Image.open(‘example.jpg’) # 获取像素点 pi…

    python 2023年5月18日
    00
  • python中sample函数的介绍与使用

    Python中sample函数的介绍与使用 random模块中的sample()函数用于从一个序列中随机选择指定长度的元素并返回一个新的列表对象。 语法 sample()函数的语法如下: random.sample(sequence, k) 其中,sequence为需要进行抽样的序列,k表示需要抽取的元素个数。 示例说明 示例1:抽取列表中的元素 例如,有一…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部