博客
关于我
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/

    你可能感兴趣的文章
    node.js 配置首页打开页面
    查看>>
    node.js+react写的一个登录注册 demo测试
    查看>>
    Node.js中环境变量process.env详解
    查看>>
    Node.js之async_hooks
    查看>>
    Node.js初体验
    查看>>
    Node.js升级工具n
    查看>>
    Node.js卸载超详细步骤(附图文讲解)
    查看>>
    Node.js卸载超详细步骤(附图文讲解)
    查看>>
    Node.js基于Express框架搭建一个简单的注册登录Web功能
    查看>>
    node.js学习之npm 入门 —8.《怎样创建,发布,升级你的npm,node模块》
    查看>>
    Node.js安装与配置指南:轻松启航您的JavaScript服务器之旅
    查看>>
    Node.js安装及环境配置之Windows篇
    查看>>
    Node.js安装和入门 - 2行代码让你能够启动一个Server
    查看>>
    node.js安装方法
    查看>>
    Node.js官网无法正常访问时安装NodeJS的方法
    查看>>
    node.js模块、包
    查看>>
    node.js的express框架用法(一)
    查看>>
    Node.js的交互式解释器(REPL)
    查看>>
    Node.js的循环与异步问题
    查看>>
    Node.js高级编程:用Javascript构建可伸缩应用(1)1.1 介绍和安装-安装Node
    查看>>