前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python(3)字符串的编码、长度、占

Python(3)字符串的编码、长度、占

作者头像
py3study
发布2020-01-13 11:09:22
1.7K0
发布2020-01-13 11:09:22
举报
文章被收录于专栏:python3python3

3、字符串和编码的转换

1、转换单个字符为编码:

ord(c)

返回值可以认为是数字类型。

代码语言:javascript
复制
foo = '中'
print(ord(foo))     # 20013

如果不止一个字符,则会报错

2、转换单个字符的编码为字符

chr(code)

返回值是字符

代码语言:javascript
复制
print(chr(20013))     # '中'

3、用unicode方式输出字符

\u十六进制编码

例如,20013转为十六进制是4E2D

代码语言:javascript
复制
print('\u4e2d')     # '中'

4、将字符转为bytes形式的编码

首先,当字符串前面有b时表示是bytes形式的编码。

例如,b'\xe4\xb8\xad'表示文字。这个东西一般是需要进行网络传输,或者在硬盘上读写时使用的。

str.encode(encoding=’UTF-8’,errors=’strict’)

附个中文说明吧,找不到类似MDN这样的完善的说明网站。

两个参数都可以省略,默认转为utf-8格式。其作用大致类似js里的encodeURI()方法,虽然我并不能完全肯定其是否一样。

示例:

代码语言:javascript
复制
foo = '中'.encode('utf-8')
print(foo)  # b'\xe4\xb8\xad'

5、从bytes形式的编码转回普通字符串

属于上面的逆向行为。

bytes.decode(encoding=”utf-8”, errors=”strict”)

代码语言:javascript
复制
foo = b'\xe4\xb8\xad'.decode()
print(foo)  # '中'

4、字符串的长度

len(o)

参数是被检查的字符串。

这个比较智能:

  1. 对普通字符串,返回其字符个数,例如len('中')的返回值是1(只有一个字符);
  2. 对于bytes形式的编码,返回其字节数。例如len(b'\xe4\xb8\xad')的返回值是3;
  3. 对于普通字符串,像\n这样的换行符或者其他转义字符,其长度视为1;
  4. 但假如字符串前面加了r(视为非转义字符),那么\n的长度则视为2;
代码语言:javascript
复制
len('中')    # 1
len(b'\xe4\xb8\xad')    # 3
len('a\nb')    # 3
len(r'a\nb')    # 4

5、字符串的替换/占位符

简单来说,占位符就是先占住一个固定的位置,然后用其他东西替换这个位置的内容。

如果玩过c语言,那么应该很熟悉。

标准占位符是:%d,注意是小写的,其他占位符也一样是小写。

通用写法是:

代码语言:javascript
复制
foo = '→%s←' % ('abc')
print(foo)  # 箭头指向的地方被替换的→abc←

占位符的数量和括号里的参数数量要一致,不然抛错

因为上面只有一个占位符,所以括号可以省略。

代码语言:javascript
复制
foo = '→%s←' % 'abc'
print(foo)  # →abc←

整数占位符(%d)

参数可以是浮点数(小数)或整数,浮点数的话直接取整数位使用。

代码语言:javascript
复制
foo = '%d' % (1.9)
print(foo)  # 1

整数占位符的补位写法:

%和后面的d之间添加两个数字,可以表示补足到多少位内容和以什么字符来补。

常见写法是补零,如示例:

代码语言:javascript
复制
foo = '%03d' % 1
print(foo)  # 001

%后面跟的第一个是0,表示用0是补位内容;第二个字符开始至d之前的字符是3,表示补足到三位。

具体来说,就是首先用1来替换%03d的位置,替换后结果是1

然后发现第二个至d之间是3,表示要补足3位,即xx1这样。

但这个x是什么呢?发现第一位是0,因此变成001,即结果。

两种特殊情况:

  1. 假如被替换后超出三位,例如foo = '%03d' % 1234替换后结果是1234。这种情况不补位;
  2. 可以用其他填充么?答案是不行。

浮点数占位符(%f)

会把参数变为一个六位小数,然后替换。

示例:

代码语言:javascript
复制
foo = '%f' % 2.1234
print(foo)  # 2.123400

也可以只取几位小数,写法是 %f 之间加 . 和需要保留的位数。

示例:

代码语言:javascript
复制
foo = '%.2f' % 2.1234
print(foo)  # 2.12

另外需要注意,浮点数由于精确度问题,因此最后一位并不是四舍五入,也不是直接舍去后面的内容。

这涉及到浮点数的存储问题,就不深谈了。

转为十六进制(%x)

很好理解,将数字转为十六进制

代码语言:javascript
复制
foo = '%x' % 31
print(foo)  # 1f

另外提一下十六进制转为十进制的方法:

代码语言:javascript
复制
foo = '1f'    # 这里需要是字符串
print(int(foo, 16))  # 31
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-07-22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 3、字符串和编码的转换
  • 4、字符串的长度
  • 5、字符串的替换/占位符
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档