Python编码和字符操作

news2024/11/23 15:16:04

编码和字符操作

在这里插入图片描述

.你觉得,迷茫的反义词是什么?有些人可能会说是坚定,但还有另一种说法:迷茫的反义词是具体。当你从一件件具体的事开始着手,焦虑就会一点点退去。——《夜读》

编码操作

UTF8编码

当谈到字符编码时,UTF-8(Unicode Transformation Format - 8-bit)是最为常见和广泛使用的字符编码之一。它是一种针对Unicode字符集的可变长度字符编码,可以表示几乎所有的Unicode字符。

以下是关于UTF-8的介绍:

  1. 可变长度编码: UTF-8 是一种可变长度编码,它使用不同长度的字节序列来表示不同范围的Unicode字符。单字节编码ASCII字符(0-127范围内),而多字节编码其他Unicode字符。

  2. 向后兼容性: UTF-8 对ASCII字符是向后兼容的,即ASCII字符在UTF-8编码中的表示与标准ASCII编码完全相同。这意味着使用UTF-8编码时,如果文本仅包含ASCII字符,它将与传统的ASCII文本兼容。

  3. 广泛支持: UTF-8由于其广泛的支持和适应性而成为互联网上的事实标准。它被用于HTML、XML、JSON等网络数据格式中,并且几乎所有的现代编程语言和操作系统都提供了对UTF-8的支持。

  4. 国际化支持: UTF-8可以表示几乎所有的Unicode字符,包括世界上几乎所有的语言的字符集。这使得它成为处理国际化文本和多语言应用程序的理想选择。

  5. 字节顺序无关: UTF-8编码不依赖于字节顺序(大端序或小端序),因此可以在不同的平台上进行交换并保持数据的完整性。

总之,UTF-8是一种灵活、高效且广泛支持的字符编码,适用于处理各种语言和国际化文本数据。在编写现代软件和开发Web应用程序时,使用UTF-8已成为一种标准做法。

# 字符串
text = "你好,世界!"

# 编码成 UTF-8
encoded_text = text.encode("utf-8")
print("UTF-8 编码后的数据:", encoded_text)

# 解码回原始字符串
decoded_text = encoded_text.decode("utf-8")
print("UTF-8 解码后的字符串:", decoded_text)
UTF-8 编码后的数据: b'\xe4\xbd\xa0\xe5\xa5\xbd\xef\xbc\x8c\xe4\xb8\x96\xe7\x95\x8c\xef\xbc\x81'
UTF-8 解码后的字符串: 你好,世界!

GBK编码

GBK(Guo Biao Kuò Zhàn)是汉字内码扩展规范的缩写,是中国国家标准GB 2312-1980的扩展。GB 2312-1980是中国国家标准化委员会于1980年发布的一种用于简体中文的字符集编码标准,其中包含了6763个常用汉字和682个其他符号、标点等字符。GBK编码在GB 2312-1980的基础上对其中的汉字部分进行了扩展,添加了包括繁体中文、日文、韩文等在内的更多汉字,共收录了21003个中文汉字和图形字符。GBK编码采用双字节编码方案,每个汉字用两个字节表示,每个字符都能被唯一地表示。

GBK编码的主要特点包括:

  1. 支持更多的汉字字符:相比于GB 2312-1980,GBK编码扩展了更多的汉字字符,使得其适用范围更广泛。
  2. 向下兼容GB 2312-1980:GBK编码保留了GB 2312-1980的编码方案,因此可以兼容GB 2312-1980编码的文件和系统。
  3. 支持多种语言:除了汉字字符外,GBK编码还包含了繁体中文、日文、韩文等字符,从而支持更多语言的编码需求。

尽管GBK编码在中国大陆和台湾地区广泛使用,但在国际范围内并不常见。随着Unicode的普及,现代的应用程序更倾向于使用Unicode字符集,因为Unicode可以统一表示世界上几乎所有的字符。

# 字符串
text = "你好,世界!"

# 编码成 GBK
encoded_text = text.encode("gbk")
print("GBK 编码后的数据:", encoded_text)

# 解码回原始字符串
decoded_text = encoded_text.d("gbk")
print("GBK 解码后的字符串:", decoded_text)
GBK 编码后的数据: b'\xc4\xe3\xba\xc3\xa3\xac\xca\xc0\xbd\xe7\xa3\xa1'
GBK 解码后的字符串: 你好,世界!

ASCII编码

在这里插入图片描述

ASCII(American Standard Code for Information Interchange)是一种用于计算机与通信设备之间交换信息的字符编码标准。它使用7位二进制数字表示128个字符,包括基本的拉丁字母、数字、标点符号和控制字符。

ASCII码最初于1963年由美国国家标准协会(ANSI)制定,后来在1967年进行了修订。ASCII标准规定了每个字符在计算机内部的二进制表示方式,以及相应的十进制和十六进制表示。其中,基本的可打印字符占据了0到127的范围,其中包括了数字、大写和小写拉丁字母、标点符号等;剩余的一些字符则被用于控制通信设备,比如换行、回车等。

ASCII码的特点包括:

  1. 简洁明了:ASCII码只使用7位二进制数,每个字符用一个字节表示,使得它在计算机内部的处理非常高效。
  2. 兼容性强:由于ASCII码是一个标准,因此几乎所有的计算机和通信设备都能够支持它,这使得ASCII码成为了通信和数据交换中的基本标准。
  3. 适用范围广泛:ASCII码最初是为了英语而设计的,但它的应用已经扩展到了其他许多语言,虽然对于一些非拉丁字母的语言来说,ASCII并不是最佳的选择。

虽然ASCII码在许多方面具有优势,但由于其仅包含128个字符,无法涵盖所有的语言和符号。为了解决这个问题,后来出现了扩展的字符编码标准,如ISO-8859和Unicode。

# 将字符转换为ASCII码值
char = 'A'
ascii_value = ord(char)
print(f"字符 '{char}' 的ASCII码值为: {ascii_value}")

# 将ASCII码值转换为字符
ascii_value = 65
char = chr(ascii_value)
print(f"ASCII码值 {ascii_value} 对应的字符为: '{char}'")

字符 'A' 的ASCII码值为: 65
ASCII码值 65 对应的字符为: 'A'

字符操作

字符串定义

string = "Hello, World!"

转义符

Python中的转义字符是一种特殊的字符序列,用于表示无法直接键入或打印的字符,比如换行符、制表符等。以下是Python中常用的转义字符及其含义:

  1. \n:换行符。将当前位置移到下一行开头。
  2. \t:制表符。将当前位置移到下一个制表符位置。
  3. \\:反斜杠。用于表示单个反斜杠字符。
  4. \':单引号。用于表示单引号字符。
  5. \":双引号。用于表示双引号字符。
  6. \b:退格符。将当前位置移到前一列。
  7. \r:回车符。将当前位置移到本行开头。
  8. \f:换页符。将当前位置移到下页开头。
print("Hello\nWorld")              
Hello
World
print("Hello\tWorld") 
Hello	World
print("This is a single quote: \'")  
This is a single quote: '
print("This is a double quote: \"")  
This is a double quote: "
print("This is a backslash: \\")   
This is a backslash: \
print("Hello\bWorld") 
HellWorld
print("Hello\rWorld")  
World
print("Hello\fWorld") 
HelloWorld

字符串长度

print("字符串:", string)
print("字符串长度:", len(string))
字符串: Hello, World!
字符串长度: 13

切片操作

在这里插入图片描述

print("原始字符串:", string)
print("第一个字符:", string[0])
print("最后一个字符:", string[-1])
print("第2到第5个字符:", string[1:5])
print("从第7个字符到最后一个字符:", string[6:])
原始字符串: Hello, World!
第一个字符: H
最后一个字符: !
第2到第5个字符: ello
从第7个字符到最后一个字符:  World!

连接字符串

string2 = "Welcome"
print("字符串1:", string)
print("字符串2:", string2)
concatenated_string = string + " " + string2
print("连接后的字符串:", concatenated_string)

连接字符串:
字符串1: Hello, World!
字符串2: Welcome
连接后的字符串: Hello, World! Welcome

替换操作

replaced_string = string.replace("World", "Python")
print("原始字符串:", string)
print("替换后的字符串:", replaced_string)
原始字符串: Hello, World!
替换后的字符串: Hello, Python!

分割操作

split_string = string.split(",")
print("原始字符串:", string)
print("分割后的字符串列表:", split_string)
原始字符串: Hello, World!
分割后的字符串列表: ['Hello', ' World!']

进阶练习

练习一

我喜欢吃苹果。我还喜欢香蕉。我数学考了一百分。老师给我奖励了一个大红花。

将该段文字中所有我转换为自己的名字,并且输出打印

page="我喜欢吃苹果。我还喜欢香蕉。我数学考了一百分。老师给我奖励了一个大红花。"
page.replace("我","王辉")
'王辉喜欢吃苹果。王辉还喜欢香蕉。王辉数学考了一百分。老师给王辉奖励了一个大红花。'

练习二

我喜欢吃苹果。我还喜欢香蕉。我数学考了一百分。老师给我奖励了一个大红花。

将所有的"我"替换为"王辉",并且一句换一行,句号结尾

# 原始字符串
original_text = "我喜欢吃苹果。我还喜欢香蕉。我数学考了一百分。老师给我奖励了一个大红花。"
replaced_text = original_text.replace("我", "王辉").replace("。", "。\n")
# 输出替换后的结果
print(replaced_text)
王辉喜欢吃苹果。
王辉还喜欢香蕉。
王辉数学考了一百分。
老师给王辉奖励了一个大红花。

练习三

我喜欢吃苹果。我还喜欢香蕉。我数学考了一百分。老师给我奖励了一个大红花。

将所有的"我"替换为"王辉",并且一句换一行,句号结尾,并且计算每一句话的长度


# 原始字符串
original_text = "我喜欢吃苹果。我还喜欢香蕉。我数学考了一百分。老师给我奖励了一个大红花。"
replaced_text = original_text.replace("我", "王辉").replace("。", "。\n")

# 输出替换后的结果
print(replaced_text)

# 分割文本为句子列表
sentences = replaced_text.split("\n")

# 输出每句的长度
for sentence in sentences:
    print(f"句子 '{sentence}' 的长度为: {len(sentence)}")

王辉喜欢吃苹果。
王辉还喜欢香蕉。
王辉数学考了一百分。
老师给王辉奖励了一个大红花。

句子 '王辉喜欢吃苹果。' 的长度为: 8
句子 '王辉还喜欢香蕉。' 的长度为: 8
句子 '王辉数学考了一百分。' 的长度为: 10
句子 '老师给王辉奖励了一个大红花。' 的长度为: 14
句子 '' 的长度为: 0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1558256.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

酷得单片机方案 2.4G儿童遥控漂移车

电子方案开发定制,我们是专业的 东莞酷得智能单片机方案之2.4G遥控玩具童车具有以下比较有特色的特点: 1、内置充电电池:这款小车配备了可充电的电池,无需频繁更换电池,既环保又方便。充电方式可能为USB充电或者专用…

重新温习广软puthon爬虫技术。

下面是我不断试错的一个过程,好多知识点全忘记了,只能不断调实例,不断优化,重构,实现自己的需求。下面是我的运行截图。还是导包的问题。 个人感觉关键的还是这几部,被划了下划线的,存在问题&a…

通知中心架构:打造高效沟通平台,提升信息传递效率

随着信息技术的快速发展,通知中心架构作为一种关键的沟通工具,正逐渐成为各类应用和系统中必不可少的组成部分。本文将深入探讨通知中心架构的意义、设计原则以及在实际场景中的应用。 ### 什么是通知中心架构? 通知中心架构是指通过集中管…

MySQL - 高阶语句(一)

先准备一张表 create table class1 (id int,name varchar(10) primary key not null ,score decimal(5,2),address varchar(20),hobbid int(5));insert into class1 values(1,liuyi,80,beijing,2); insert into class1 values(2,wangwu,90,shengzheng,2); insert into class1 …

Linux通过进程组和会话理解守护进程---代码实现一个服务进程

进程组和会话 这一个课程的笔记 概念和特性 进程组 也称之为作业。BSD于1980年前后向Unix中增加的一个新特性。代表一个或多个进程的集合。每个进程都属于一个进程组。在waitpid函数和kill函数的参数中都曾使用到。操作系统设计的进程组的概念,是为了简化对多个进…

酒店管理系统项目用例图及用例说明

1、系统功能模块图 2、部分系统功能模块说明 (1)查询房间剩余 模块名称:管理员登录 编号:1-1 主要功能:验证管理员登录用户名及密码 上级调用模块:无 下级调用模块: 约束: &a…

c语言-static

static作用&#xff1a;修饰变量和函数 修饰局部变量-静态局部变量 static未修饰局部变量 #include <stdio.h>void print() {int a 0;a;printf("%d ", a); }int main() {int i 0;for (i 0; i < 10; i){print();}return 0; }运行结果 static修饰局部变…

c++基础学习第八天(stl)

c基础学习第八天&#xff08;stl&#xff09; 文章目录 2.2、 vector容器2.2.1、 vector基本概念2.2.2、 vector构造函数2.2.3、 vector赋值操作2.2.4、 vector容量和大小2.2.5、 vector插入和删除2.2.6、 vector数据存取2.2.7、 vector互换容器2.2.8、 vector预留空间 2.3、 d…

适用于 Linux 的 Windows 子系统安装初体验

1、简述 Windows Subsystem for Linux (WSL) 是 Windows 的一项功能&#xff0c;允许您在 Windows 计算机上运行 Linux 环境&#xff0c;而无需单独的虚拟机或双重启动。 WSL 旨在为想要同时使用 Windows 和 Linux 的开发人员提供无缝且高效的体验。 使用 WSL 安装和运行各种 L…

5G无线接入网和接口协议

**部分笔记** 4.3无线协议架构 NR无线协议分为两个平面&#xff1a;用户面和控制面。 用户面&#xff08;UP&#xff09;:协议栈及用户数据采用的协议 控制面(Control Plane&#xff0c;CP)协议栈即系统的控制信令传输采用的协议簇。 虚线标注的是信令数据的流向。一个UE在…

权限提升-Linux系统权限提升篇VulnhubPATH变量NFS服务Cron任务配合SUID

知识点 1、Web或普通用户到Linux-服务安全配合SUID-NFS 2、普通用户到Linux-环境变量配合SUID-$PATH 3、Web或普通用户到Linux-计划任务权限不当-Cron 章节点&#xff1a; 1、Web权限提升及转移 2、系统权限提升及转移 3、宿主权限提升及转移 4、域控权限提升及转移 基础点 …

DBeaver Ultimate Edtion 24 for Linux deb (sysin) - 通用数据库工具

DBeaver Ultimate Edtion 24 for Linux deb (sysin) - 通用数据库工具 One tool for all data sources 请访问原文链接&#xff1a;https://sysin.org/blog/dbeaver-linux/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.org 通用…

音视频开发之旅(80)- AI数字人-腾讯开源AniPortrait-音频驱动的肖像动画

目录 1、前言 2、效果展示 3、原理学习 4、遇到的问题与解决方案 5、资料 一、前言 一个月前阿里Emo发布&#xff0c;通过音频驱动的非常自然的肖像视频&#xff0c;引起很大反响。具体看下面的视频&#xff0c;但是并没有开源其代码。 这两天腾讯开源了其音频驱动的肖像…

应急物资管理系统|实现应急物资的全生命周期管理和监控

应急物资管理系统是一种现代化、智能化、可视化的物资管理平台&#xff0c;主要用于实现对应急物资的全生命周期管理和监控&#xff0c;并提供可靠的应急响应支持。 应急物资管理系统功能 准入控制&#xff1a;东识应急物资管理系统可以实现准入控制&#xff0c;确保只有经过授…

【微服务】spring状态机模式使用详解

一、前言 在很多系统中&#xff0c;通常会涉及到某个业务需要进行各种状态的切换操作&#xff0c;例如在审批流程场景下&#xff0c;某个审批的向下流转需要依赖于上一个状态的结束&#xff0c;再比如电商购物场景中&#xff0c;一个订单的生命周期往往伴随着不同的状态&#…

GEE23:基于植被物候实现农作物分类

地物分类 1. 写在前面2. 北京作物分类 1. 写在前面 今天分享一个有意思的文章&#xff0c;用于进行农作物分类。文章提出了一个灵活的物候辅助监督水稻(PSPR)制图框架。主要是通过提取植被物候&#xff0c;并自动对物候数据进行采样&#xff0c;获得足够多的样本点&#xff0c;…

LLM--提示词Propmt的概念、作用及如何设计提示词

文章目录 1. 什么是提示词&#xff1f;2. 提示词的作用3. 如何设计提示词&#xff1f;3.1. 提供详细的信息3.2. 指定角色3.3. 使用分隔符和特殊符号3.4. 提供示例3.5. 少量示例的思维链&#xff08;COT&#xff09;模型3.6. 思维树&#xff08;TOT&#xff09;模型3.7. 自洽性 …

牛角工具箱源码 轻松打造个性化在线工具箱

&#x1f389; Whats this&#xff1f; 这是一款在线工具箱程序&#xff0c;您可以通过安装扩展增强她的功能 通过插件模板的功能&#xff0c;您也可以把她当做网页导航来使用~ 觉得该项目不错的可以给个Star~ &#x1f63a; 演示地址 https://tool.aoaostar.com &#x1f…

京东云免费服务器申请入口,2024年最新免费云主机

京东云服务器免费6月申请入口 jdyfwq.com 在京东云免费云主机申请页面&#xff0c;免费云服务器配置为云主机2核4G5M和轻量云主机2C2G可以申请免费使用&#xff0c;目前京东云免费云服务器申请时长从之前的6个月缩短到1个月&#xff0c;如下图&#xff1a; 京东云免费云主机 云…

如何通过cookie来区分这是瑞数反爬的几代

一、以下仅个人观点&#xff0c;可能有误 1、瑞数反爬了解 瑞数反爬&#xff1a;大多数首次不带cookie的请求&#xff0c;响应状态码是202/412瑞数的cookie &#xff1a; 我们看PPT结尾的Cookie的来定位是几代&#xff0c;PT的是js生成的&#xff1b; 不看OS的&#xff0c;OS…