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

    你可能感兴趣的文章
    PE查找文件偏移地址
    查看>>
    PE知识复习之PE的导入表
    查看>>
    pfsense关闭nat
    查看>>
    PFX(Parallel Framework) and Traditional Multithreading
    查看>>
    PGOS:今天动手给电脑装青苹果Win7 X64位系统
    查看>>
    pgpool-II3.1 的内存泄漏(一)
    查看>>
    PgSQL · 特性分析 · PG主备流复制机制
    查看>>
    PGSQL主键序列
    查看>>
    PGSQL安装PostGIS扩展模块
    查看>>
    pg数据库中两个字段相除
    查看>>
    PhalApi:[1.23] 请求和响应:GET和POST两者皆可得及超越JSON格式返回
    查看>>
    Phalcon环境搭建与项目开发
    查看>>
    Phantom.js维护者退出,项目的未来成疑
    查看>>
    Pharmaceutical的同学们都看过来,关于补码运算的复习相关内容
    查看>>
    Phoenix 查看表信息及修改元数据
    查看>>
    phoenix_执行sql报错_Error: ERROR 504 (42703): Undefined column. columnName=(state=4270_大数据工作笔记0181
    查看>>
    phoenix启动失败_The history file `/root/.sqlline/history` may be an older history---记录024_大数据工作笔记0184
    查看>>
    Phoenix基础命令_视图映射和表映射_数字存储问题---大数据之Hbase工作笔记0036
    查看>>
    phoenix无法连接hbase shell创建表失败_报错_PleaseHoldException: Master is initializing---记录020_大数据工作笔记0180
    查看>>
    Phoenix简介_安装部署_以及连接使用---大数据之Hbase工作笔记0035
    查看>>