前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python 字符串(字符序列)和字节序列

python 字符串(字符序列)和字节序列

作者头像
友儿
发布2022-09-26 10:56:12
6010
发布2022-09-26 10:56:12
举报
文章被收录于专栏:友儿

字符串(字符序列)和字节序列

字符

  • 由于历史原因, 将字符定义为unicode字符还不够准确, 但是未来字符的定义一定是unicode字符

字节

就是字符的二进制表现形式

码位

我们计算机显示的实际上是码位

代码语言:javascript
复制
>>> '你好'.encode("unicode_escape").decode()
'\\u4f60\\u597d'
>>>
>>> '\u4f60\u597d'
'你好'
  • UNICODE标准中以4~6个十六进制数字表示

编码

字符序列(string) -> 字节序列(bytes) -------------编码(encode)

代码语言:javascript
复制
>>> "你好".encode("utf-8")
b'\xe4\xbd\xa0\xe5\xa5\xbd'

字节序列(bytes) -> 字符序列(string) -------------解码(decode)

代码语言:javascript
复制
>>> b
b'\xe4\xbd\xa0\xe5\xa5\xbd'
>>> b.decode("utf")
'你好'

编码错误

乱码和混合编码

检查编码

没有办法通过字节序列来得出编码格式, 都是统计学来预估当前的编码

代码语言:javascript
复制
# 安装chardet
pip install chardet

# 导入charet
>>> import chardet
>>> chardet.detect(b)

解决乱码和混合编码

忽略错误编码

代码语言:javascript
复制
>>> b_2.decode("utf-8", errors='ignore')
'你好'

利用鬼符来替换

代码语言:javascript
复制
>>> b_2.decode("utf-8", errors='replace')
'你好��'

字符串的CRUD操作

代码语言:javascript
复制
通过dir("")可以查看当前字符串的操作方法

Create(创建)

+

代码语言:javascript
复制
>>> a = "a"
>>> id(a)
22951584
>>> a = a + "b"
>>> id(a)
60513280
>>> a
'ab'

+=

代码语言:javascript
复制
a += "b"  就是 a = a + "b" 省略写法 

Retrieve(检索)

根据索引获取字符

在计算机语言当中, 索引值是从0开始数的

代码语言:javascript
复制
>>> a = "hello, world"
>>> a[1]
'e'

find和index(获取目标字符的索引值)

代码语言:javascript
复制
>>> a.find("e")
1
>>> a.find("!")
-1

# 找不到目标字符时, index会报错
>>> a.index("!")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: substring not found

startwith和endwith

代码语言:javascript
复制
>>> f = "2020-11-22-xxxxx"
>>> f.startswith("2020-11-22")
True
>>> f = "xxxxx.jpg"
>>> f.endswith("jpg")
True

UPDATE(更新)

replace(替换)

返回的是一个新的字符串

代码语言:javascript
复制
a.replace("wer", "wor")

split(分割)

代码语言:javascript
复制
>>> a = "<<python>>, <<java>>, <<c++>>"
>>> a.split(",")
['<<python>>', ' <<java>>', ' <<c++>>']

join(拼接)

代码语言:javascript
复制
>>> b
['<<python>>', ' <<java>>', ' <<c++>>']
>>> ",".join(b)
'<<python>>, <<java>>, <<c++>>'

DELETE(删除)

strip

代码语言:javascript
复制
>>> a
'          hello, world          '
>>> a.strip()
'hello, world'
>>>

lstrip

rstrip

字符串的输出和输入

保存到文件

代码语言:javascript
复制
# open函数打开一个文件, 没有文件会新建, 但是路劲不对会报错
# 指定文件名, 方法(读, 写, 追加), 编码格式
output = open("output.txt", "w", encoding="utf-8")
content = "hello, world"
# 正式写入文件
output.write(content)
# 关闭文件句柄
output.close()

读取文件

代码语言:javascript
复制
input = open("output.txt", "r", encoding="utf-8")
# 获取文件中的内容
content = input.read()
print(content)

# 暂时理解为只能读取一遍
content_2 = input.read()
print(content_2)

追加文件

代码语言:javascript
复制
output = open("output.txt", "a", encoding="utf-8")
content = "\nhello, world"
# 正式写入文件
output.write(content)
# 关闭文件句柄
output.close()

字符串的格式化输出

format

按传入参数默认顺序

代码语言:javascript
复制
a = "ping"
b = "pong"

"play pingpong: {}, {}".format(a, b)

按指定参数索引

代码语言:javascript
复制
a = "ping"
b = "pong"

"play pingpong: {0}, {1}, {0}, {1}".format(a, b)

按关键词参数

代码语言:javascript
复制
a = "ping"
b = "pong"

print("play pingpong: {a}, {b}, {a}, {b}".format(a='ping', b='pong'))

按变量(推荐, 但是只有3.6以上才可以使用)

代码语言:javascript
复制
a = "ping"
b = "pong"

print(f"playing pingpong: {a}, {b}")

小数的表示

代码语言:javascript
复制
>>> "{:.2f}".format(3.14159)
'3.14'
>>>

%

代码语言:javascript
复制
>>> "playing %s %s" % ("ping", "pong")
'playing ping pong'
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-08-31,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 字符串(字符序列)和字节序列
  • 字符串的CRUD操作
  • 字符串的输出和输入
  • 字符串的格式化输出
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档