详解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日

相关文章

  • python错误处理详解

    Python错误处理详解 在编写Python程序时,难免会发生错误。对于程序员来说,要善于处理这些错误,让程序能够正常运行或者优雅地退出。本文将对Python的错误处理机制进行详细讲解,帮助读者更好地处理程序中的错误。 Python中的错误类型 Python中主要有以下几种错误类型: 语法错误(Syntax Error):代码无法被Python解释器理解。例…

    python 2023年5月13日
    00
  • 浅谈Python的字典键名可以是哪些类型

    下面将详细讲解一下Python中字典键名可以是哪些类型。 1. 字典键名类型的基本要求 字典是Python中常用的数据类型,其中键名是字典中重要的一部分,而Python的字典键名允许的数据类型与其他语言不同,具体如下: 1.键名的类型必须是不可变的,即不能是列表、集合、字典等可变类型。 2.键名的类型必须可以通过哈希算法求出对应的哈希值。 Python中的哈…

    python 2023年5月13日
    00
  • 如何在python中写hive脚本

    当在 Python 中进行大数据处理时,经常需要和Hive交互,执行查询和操作。以下是在 Python 中写 Hive 脚本的步骤和示例: 1. 安装PyHive库 PyHive是Apache Hive的Python库,提供了Python连接到Hive的驱动, 安装PyHive之前需要先安装好Thrift 运行以下命令在终端中安装PyHive: pip in…

    python 2023年6月3日
    00
  • pytz格式化北京时间多出6分钟问题的解决方法

    当使用 pytz 库进行日期时间格式化时,可能会发现北京时间与 UTC 时间相比多出6分钟,这是由于北京时间在1970年前后的历史变迁导致的。下面是解决这个问题的完整攻略。 问题原因 北京时间在1970年前后跟随过去当地的历史变迁,其中包含一些奇怪的偏移量(例如在1919年时的偏移量为5:50:13),这样就导致了在使用 pytz 库进行北京时间与 UTC …

    python 2023年6月2日
    00
  • python request要求接口参数必须是json数据的处理方式

    为了处理 python request 对接口参数必须是 json 数据的情况,需要采用以下具体步骤: 导入必要的库 在处理请求的时候需要导入 requests 库,json 库用于构建 json 数据 import requests import json 准备 json 数据 使用 Python 对象把请求的数据构建成字典形式,然后使用 json.dum…

    python 2023年6月3日
    00
  • 一文轻松掌握python语言命名规范规则

    一文轻松掌握Python语言命名规范规则 在使用Python编写代码时,良好的命名规范不仅仅可以让代码更加易读易懂,还能减少错误发生的概率。Python社区提出了一些通用的命名规范,下面是一些基本规则。 1. 变量和函数名命名 命名要具备可读性,避免使用缩写和望文不知义的变量名。 变量名要小写。 函数名要小写,如果是多个单词组成,用下划线(_)分隔。 类名要…

    python 2023年6月5日
    00
  • python求质数列表的例子

    以下是“Python求质数列表的例子”的完整攻略。 1. 什么是质数 在数学中,质数是指只能被1和自身整除的正整数。例如,2、3、5、7、11等都是质数,而4、6、8、9等不是质数。 2. 求质数列表的方法 在Python中,我们可以使用循环和判断语句来求质数列表。以下是一个示例演示如何使用循环和判断语求质数列表: # 定义一个空列表,用于存储质数 prim…

    python 2023年5月13日
    00
  • python语法之语言元素和分支循环结构详解

    Python语法之语言元素和分支循环结构详解 本文主要讲解Python基础语法之语言元素和分支循环结构的详细介绍。 1.语言元素 在Python中,语言元素代表了一种基本的数据类型,包括以下几种: 数字:包括整数、浮点数和复数等。 字符串:是由字符序列组成,可以是单引号或双引号。 列表:是一个可变的有序序列,每个元素可以是数字、字符串、列表等。 元组:是一个…

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