博客
关于我
Python基础数据知识(1)
阅读量:169 次
发布时间:2019-02-28

本文共 1947 字,大约阅读时间需要 6 分钟。

Python 字符编码与字符串操作

1. 字符编码原理

在 Python 编码时,页面顶端需要添加如下行:

# -*- coding: UTF-8 -*-

原因解释

  • 字符编码

    • ASCII:最早只有 127 个字符被编码到计算机中,包括大小写英文字母、数字和一些符号。例如,大写字母 A 的编码是 65,小写字母 z 的编码是 122
    • GB2312:为了处理中文,ASCII 的一个字节显然不够,至少需要两个字节。因此,中国制定了 GB2312 编码标准,用来将中文字符编码到计算机中。
  • 多语言编码问题

    • 全世界有上百种语言,每个国家都有自己的字符编码标准。例如,日本使用 Shift_JIS,韩国使用 Euc-kr。这些不同的编码标准会导致多语言混合文本中出现乱码问题。
  • Unicode 编码的出现

    • Unicode 统一了所有语言的字符编码,避免了乱码问题。
    • ASCII 编码是 1 个字节,而 Unicode 编码通常是 2 个字节。
  • 字符编码的演变

    • UTF-8:为了在存储和传输上节省空间,Unicode 编码被转换为可变长编码的 UTF-8。
    • UTF-8 的优点:
    • 英文字符通常只需 1 个字节,汉字通常需要 3 个字节,罕见字符可能需要 4-6 个字节。
    • ASCII 编码可以被看作 UTF-8 的一部分,因此支持 ASCII 的旧系统仍能正常运行。
  • 2. 字符类型与操作

    1. 字符串与字节的转换

    • Python 函数

      • ord():获取字符的整数编码。例如,ord('A') 返回 65,ord('中') 返回 25991。
      • chr():将整数转换为对应的字符。例如,chr(20013) 返回 "中"。
      • encode():将字符串转换为字节流。例如,'ABC'.encode('ascii') 返回 b'ABC'。
      • decode():将字节流转换为字符串。例如,b'ABC'.decode('ascii') 返回 'ABC'。
    • 字符串操作

      • 获取字符:使用方括号截取字符串。例如,'Hello World!'[0] 返回 'H','Python Runoob'[1:5] 返回 'ytho'。
      • 字符串更新:使用切片操作修改字符串。例如,'Hello World![:6] + 'Runoob!' 更新为 'Hello Runoob!'。
      • 字符串替换:使用 replace() 方法替换字符。例如,'ales'.replace('l','p') 替换为 'aples'。
      • 去掉空格:使用 strip() 方法去掉首尾空格。例如,' lkjd'.strip() 返回 'lkjd'。
      • 大小写转换:使用 title()upper()lower() 方法分别将字符串转换为首字母大写、全大写和全小写。

    2. 字符串格式化

    • 格式化字符串

      • 使用 % 格式化字符串。例如,'Hello, %s' % 'world' 返回 'Hello, world'。
      • 使用 format() 方法替换占位符。例如,'Hello, {0}, 成绩提升了 {1:.1f}%'.format('小明', 17.125) 返回 'Hello, 小明, 成绩提升了 17.1%'。
    • 特殊字符处理

      • 使用 %% 表示单个 % 字符。例如,'growth rate: %d %%' % 7 返回 'growth rate: 7 %'。

    3. 字符串与字节的互操作

    • 字符串长度

      • len('中文') 返回 2,len(b'ABC') 返回 3,len('中文'.encode('utf-8')) 返回 6。
    • 字符串连接与重复

      • 使用 + 连接字符串。例如,'Hello' + 'Python' 返回 'HelloPython'。
      • 使用 * 重复字符串。例如,'Hello' * 2 返回 'HelloHello'。
    • 成员运算符

      • 使用 innot in 检查字符串中是否包含特定字符。例如,'"H" in 'Hello' 返回 True,'"M" not in 'Hello' 返回 True。
    • 原始字符串

      • 使用 rR 创建原始字符串,避免转义特殊字符。例如,print r'\n'print R'\n' 都输出换行符,但形式不同。

    3. 常见问题与解决方案

    在实际应用中,可能会遇到字符编码问题。例如,读取非 UTF-8 字符流时需要使用 decode('utf-8', errors='ignore') 忽略错误字符。

    4. 总结

    在计算机系统中,统一使用 Unicode 编码,当需要保存或传输时,转换为 UTF-8 编码。Python 提供了丰富的字符串和字节操作功能,能够方便地进行字符编码与解码操作。

    转载地址:http://tpnj.baihongyu.com/

    你可能感兴趣的文章
    npm install 报错 no such file or directory 的解决方法
    查看>>
    npm install 权限问题
    查看>>
    npm install报错,证书验证失败unable to get local issuer certificate
    查看>>
    npm install无法生成node_modules的解决方法
    查看>>
    npm install的--save和--save-dev使用说明
    查看>>
    npm node pm2相关问题
    查看>>
    npm run build 失败Compiler server unexpectedly exited with code: null and signal: SIGBUS
    查看>>
    npm run build报Cannot find module错误的解决方法
    查看>>
    npm run build部署到云服务器中的Nginx(图文配置)
    查看>>
    npm run dev 和npm dev、npm run start和npm start、npm run serve和npm serve等的区别
    查看>>
    npm run dev 报错PS ‘vite‘ 不是内部或外部命令,也不是可运行的程序或批处理文件。
    查看>>
    npm scripts 使用指南
    查看>>
    npm should be run outside of the node repl, in your normal shell
    查看>>
    npm start运行了什么
    查看>>
    npm WARN deprecated core-js@2.6.12 core-js@<3.3 is no longer maintained and not recommended for usa
    查看>>
    npm 下载依赖慢的解决方案(亲测有效)
    查看>>
    npm 安装依赖过程中报错:Error: Can‘t find Python executable “python“, you can set the PYTHON env variable
    查看>>
    npm.taobao.org 淘宝 npm 镜像证书过期?这样解决!
    查看>>
    npm—小记
    查看>>
    npm上传自己的项目
    查看>>