笔记3——字符串和编码

ops/2025/2/13 10:21:14/

文章目录

  • 字符串和编码
    • 编码
    • 解码
    • 字符串长度
    • 格式化字符串
      • (1)用 % 实现
      • (2)用 format() 实现
      • (3)用 f-string实现
    • eg

字符串和编码

在 Python 中,字符串是 Unicode 字符序列。Python 3 中的字符串默认使用 Unicode 编码(UTF-8),基本可以标识所有的字符串
为避免乱码,用 utf-8 对 str 和 bytes 进行转换;常在文件开头加以下两行:

python">#!/usr/bin/env python3     #告诉Linux/OS系统,这是一个python可执行程序
# -*- coding: utf-8 -*-    #告诉python解释器,按照utf-8编码读取源代码

编码

UTF-8:一种变长的 Unicode 编码,支持所有语言字符
ASCII:仅支持英文字符和部分控制字符
GBK:主要用于中文字符编码

  • ord()函数获取字符的整数表示
python">print(ord('A'))
print(ord('中'))

在这里插入图片描述

  • chr()函数把编码转换为对应的字符
python">print(chr(66))
print(chr(25991))

在这里插入图片描述

  • 如果知道了字符的整数编码,还可以用十六进制写字符串str
    u4e2d = 0010 1110 0010 1101 = 20013
    u6587 = 0110 0101 1000 0111 = 29551
python">print('\u4e2d\u6587')

在这里插入图片描述

  • bytes 类型数据用 b’’ 或 b"" 表示
    ‘ABC’ 是字符串str,一个字符对应多个字节
    b’ABC’ 是以字节为单位,每一个字符占用一个字节
python">x = b'ABC' 
print(x)

在这里插入图片描述

解码

解码:将字节(bytes)转换回字符串

  • 在 bytes 中,无法显示为 ASCII 字符的字节,用 \x## 表示
python">print(b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8'))
#解码 decode()方法
#print(b'\xe4\xb8\xad\xff'.decode('utf-8'))
# \xff 为无法解码的无效字节,decode()会报错
print(b'\xe4\xb8\xad\xff'.decode('utf-8', errors='ignore')) 
# errors='ignore' 忽略错误的字节

在这里插入图片描述

在这里插入图片描述

字符串长度

  • len() : 计算 str 包含多少个字符;如果换成 bytes,len() 就计算字节数
python">print(len('ABC'))   #字符串3个字符
print(len('中文'))   #字符串2个字符
print(len(b'ABC'))  #3个字符的bytes,一个字符一个字节,3个字节
print(len(b'\xe4\xb8\xad\xe6\x96\x87')) #6个字节
print(len('中文'.encode('utf-8'))) # '中文' 解码成 utf-8,为6个字节

在这里插入图片描述

格式化字符串

(1)用 % 实现

%s —— 表示用字符串替换
%d —— 表示用整数替换
%f —— 表示用浮点数替换
%x —— 表示用十六进制整数替换

  • 有几个 %?占位符,后面就跟几个变量,顺序要一致;如果只有一个 %?,括号可省略
python">print('Hello, %s' % 'gaohui')
print('Hi, %s, you have ¥%d.' %  ('gaohui',10000000))

在这里插入图片描述

  • 格式化整数和浮点数可以指定是否补0或者补位数
    %d —— 普通输出
    %2d —— 宽度为2,右对齐
    %02d —— 宽度为2,左补0
    %-2d —— 宽度为2,左对齐
    %.2d —— 最少输出2位,不够前面补0占位
    %.2f —— 强制输出小数点后两位
python">print('%d-%2d-%02d-%-2d-%.2d' % (1,1,1,1,111))
print('%.2f' % 3.1415926)

在这里插入图片描述

  • 如果不太确定用什么, %s 永远起作用,会把所有数据类型转换为字符串
  • 如果字符串本身含有%,用 %% 转义表示 %
    在这里插入图片描述

(2)用 format() 实现

  • 用传入的参数依次替换字符串内的占位符{0}、{1}…
python">print('hello,{0},your salary incresses by {1:.1f}%.'.format('gaohui',50.89999))

在这里插入图片描述

(3)用 f-string实现

  • f 开头的字符串,字符串中若含有 {xxx},就会以对应变量替换
python">r = 2.5
s = 3.14 * r ** 2
print(f'The area of a circle with radius {r} is {s:.2f}') 
#{r}、{s:.2f}被变量r、s的值替换;并且 .2f 指定保留两位小数

在这里插入图片描述

eg

python"># 计算提升百分比
a = 99
b = 150
r = (b-a)/a*100
print('提升了%.1f%%' % r) # '%%' 转义表示 '%';%.1f表示保留小数点后一位
print('提升了{0:.1f}%'.format(r))
print(f'提升了{r:.1f}%')

在这里插入图片描述


http://www.ppmy.cn/ops/158016.html

相关文章

MySQL8.0 innodb Cluster 高可用集群部署(MySQL、MySQL Shell、MySQL Router安装)

简介 MySQL InnoDB集群(Cluster)提供了一个集成的,本地的,HA解决方案。Mysq Innodb Cluster是利用组复制的 pxos 协议,保障数据一致性,组复制支持单主模式和多主模式。 InnoDB Cluster组件: …

基于Java的分布式系统架构设计与实现

Java在大数据处理中的应用:基于Java的分布式系统架构设计与实现 随着大数据时代的到来,数据处理的规模和复杂性不断增加。为了高效处理海量数据,分布式系统成为了必不可少的架构之一。而Java,凭借其平台独立性、丰富的生态系统以…

Vue3(2)

一.Vue新特性 &#xff08;1&#xff09;defineOptions:主要是用来定义Options API的选项 背景说明&#xff1a;有< script setup >之前&#xff0c;如果定义props&#xff0c;emits可以轻而易举地添加一个与setup平级 的属性。但是用了< script setup >后&#…

DeepSeek解决服务器繁忙,使用API接口进行使用

一、在网页端客户端使用DeepSeekR1&#xff0c;经常是问一个问题&#xff0c;然后就是服务器繁忙 二、具体为什么会出现这样的情况那&#xff1f; 用户流量过大&#xff1a;DeepSeek的免费开放和强大功能吸引了大量用户&#xff0c;短时间内的请求激增使服务器负担过重。 算力…

H5 图片系列—new Image()加载图片是否会有缓存,从而img标签获取同一数据源显示时使用该缓存数据?

是的,new Image() 在加载图片时,会利用浏览器的缓存机制。如果图片的 src 地址相同,浏览器会尝试从缓存中加载图片,而不是重新从网络请求。这是浏览器默认的行为,不会重复下载相同的图片,从而提高页面加载速度。 1.缓存机制 1.浏览器缓存: a.当 img.src = imageUrl 被…

C语言简单练习题

文章目录 练习题一、计算n的阶乘bool类型 二、计算1!2!3!...10!三、计算数组arr中的元素个数二分法查找 四、动态打印字符Sleep()ms延时函数system("cls")清屏函数 五、模拟用户登录strcmp()函数 六、猜数字小游戏产生一个随机数randsrandRAND_MAX时间戳time() 示例 …

2、k8s 二进制安装(详细)

k8s 二进制安装 IP规划初始化部署 etcd 集群在 etcd01 节点上操作准备cfssl证书生成工具&#xff0c;加权生成etcd证书上传etcd软件包启动 etcd 服务 部署 Master 组件部署 Worker Node 组件node 节点安装 docker部署组件 部署 CNI 网络组件部署 flannel简介部署 部署 Calico简…

返回倒数第N个链表节点

力扣题目&#xff1a;LCR 140. 训练计划 II - 力扣&#xff08;LeetCode&#xff09; 给定一个头节点为 head 的链表用于记录一系列核心肌群训练项目编号&#xff0c;请查找并返回倒数第 cnt 个训练项目编号。 示例 1&#xff1a; 输入&#xff1a;head [2,4,7,8], cnt 1 输…