Python 的字符串

在最新的 Python 3 版本中,字符串是以 Unicode 编码的,也就是说,Python 的字符串支持多语言,例如:

print('包含中文的 str')

对于单个字符的编码,Python 提供了 ord() 函数获取字符的整数表示(方式),chr() 函数把编码转换为对应的字符:

print(ord('中'))
print(ord('A'))
print(chr(66))
print(chr(25991))

测试结果:

20013
65
B

如果知道字符的整数编码,还可以用十六进制这样写 str :

print('\u4e2d\u6587')
输出结果:
中文

两种写法完全是等价的。由于 Python 的字符串类型是 str ,所以在内存中以 Unicode的编码格式表示,一个字符对应若干个字节。如果要在网络上传输,或者保存到磁盘里面,就需要把str类型字符串变为以字节为单位的 bytes 。Python 对 bytes 类型的数据用带 b 前缀的单引号或双引号表示,如:x = b'ABC'。

注意区分 'ABC' 和 b'ABC',前者是str字符串类型 ,后者虽然内容显示得和前者一样,但 bytes 的每个字符都只占用一个字节,两者在内存里面得“地址”是不一样的。

如果我们要把 bytes 变为 str字符串型 ,就需要用 decode() 方法:

print(b'ABC'.decode('ascii'))

要计算 str 包含多少个字符,可以用 len() 函数,len() 函数计算的是str的字符数,如果换成 bytes ,len() 函数就计算字
节数:

print( len('ABC'))
print(len(b'ABC'))
运行结果:
3
3

由于 Python 源代码也是一个文本文件,所以,当你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为 UTF-8 编码。当Python 解释器读取源代码时,为了让它按 UTF-8 编码读取,我们通常在文件开头写上这两行:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

第一行注释是为了告诉 Linux/OS X 系统,这是一个 Python 类型的可执行程序,Windows 的系统会忽略这个注释;第二行注释是为了告诉 Python 的解释器,让解释器按照 UTF-8 编码读取源代码,如果不添加,那么在源代码中写的中文在输出的时候可能会有乱码。而且有时候申明了 UTF-8 编码也并不意味着 .py结尾的文件就是 UTF-8 编码的,必须要确保你使用的文本编辑器正在使用 UTF-8 without BOM类型的编码格式。举例如下:

#!/usr/bin/env python3
# -*- coding: utf-8 -*- s = 'Python-中文' #有中文字符
print(s)
b = s.encode('utf-8')
print(b)
print(b.decode('utf-8'))

这里提个建议,在进行编码的时候不要用电脑或工具本身自带笔记本来进行编写,有时候这些记事本会“自作聪明”的添加一些未知的字符串进去,而导致程序报错,你却找不到原因,编码工具可以使用submit Text、Visual Studio Code、Notepad、UItrEdit等,具体使用就看个人的使用习惯了。

Python 的字符串的更多相关文章

  1. Python格式化字符串~转

    Python格式化字符串 在编写程序的过程中,经常需要进行格式化输出,每次用每次查.干脆就在这里整理一下,以便索引. 格式化操作符(%) "%"是Python风格的字符串格式化操作 ...

  2. python学习--字符串

    python的字符串类型为str 定义字符串可以用 ‘abc' , "abc", '''abc''' 查看str的帮助 在python提示符里 help(str) python基于 ...

  3. Python格式化字符串和转义字符

    地址:http://blog.chinaunix.net/uid-20794157-id-3038417.html Python格式化字符串的替代符以及含义     符   号     说     明 ...

  4. [转载] python 计算字符串长度

    本文转载自: http://www.sharejs.com/codes/python/4843 python 计算字符串长度,一个中文算两个字符,先转换成utf8,然后通过计算utf8的长度和len函 ...

  5. Python基础-字符串格式化_百分号方式_format方式

    Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This ...

  6. python判断字符串

    python判断字符串 s为字符串s.isalnum() 所有字符都是数字或者字母s.isalpha() 所有字符都是字母s.isdigit() 所有字符都是数字s.islower() 所有字符都是小 ...

  7. Python格式化字符串

    在编写程序的过程中,经常需要进行格式化输出,每次用每次查.干脆就在这里整理一下,以便索引. 格式化操作符(%) "%"是Python风格的字符串格式化操作符,非常类似C语言里的pr ...

  8. python(七)字符串格式化、生成器与迭代器

    字符串格式化 Python的字符串格式化有两种方式:百分号方式.format方式 1.百分号的方式 %[(name)][flags][width].[precision]typecode (name) ...

  9. Python 的字符串格式化和颜色控制

    (部分内容源自武神博客和网络收集.) Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两 ...

  10. python反转字符串(简单方法)及简单的文件操作示例

    Python反转字符串的最简单方法是用切片: >>> a=' >>> print a[::-1] 654321 切片介绍:切片操作符中的第一个数(冒号之前)表示切片 ...

随机推荐

  1. 一种快速过VMP3.x调试器虚拟机检测的方法

    VMP3.x 以上的版本的壳代码引入了一个标志位数值 Flags, 根据这个Flags值的位执行对应的事情. 比如: and 2 = 2 表示检测用户层调试器 and 4 = 4 表示检测内核调试器 ...

  2. MySql恢复密码的过程

    密码是一个非常重要的东西,所以往往设置的很复杂,也往往一不小心.......就忘了  : ( 很多童鞋在Linux下看到一堆命令行往往都是一脸懵逼,不知从何下手,这里记录了下基本的恢复操作以备不时之需 ...

  3. 2018-2019-2 20165239 《网络对抗技术》Kali的安装 第一周

    2018-2019-<网络对抗技术> Kali安装 20165239其米仁增 一.资源下载以及工具安装 1.下载虚拟机工具VMware. 下载链接 :https://www.baidu.c ...

  4. django-celery配置

    1.项目启动顺序: 启动项目: python manage.py runserver 启动celery beat python manage.py celery beat 启动celery worke ...

  5. unity下贴图混合(Texture Blending)

    在unity制作自定义时,经常会遇到自定义妆容等问题,美术会提供大量的眉毛/胡子/腮红等贴图,来供用户选择. 美术给出的眉毛的小贴图如下: 在用户选用不同的胡子眉毛,可以将选定的小贴图和皮肤base贴 ...

  6. Scrapy框架之CrawlSpider

    提问:如果想要通过爬虫程序去爬取”糗百“全站数据新闻数据的话,有几种实现方法? 方法一:基于Scrapy框架中的Spider的递归爬取进行实现(Request模块递归回调parse方法). 方法二:基 ...

  7. <玩转Django2.0>读书笔记:表单

    1. 表单字段 参考: 官方文档 Django表单字段汇总 2. 表单代码示例(forms.Form) # form.py代码 # 获取数据库数据 choices_list = [(i+1,v['ty ...

  8. oracle主键和索引

    主键:能够唯一标识一条记录的字段为主键(亦或主码),不能重复的,不允许为空.作用:用来保证数据完整性个数:主键只能有一个 索引:作用:是提高查询排序的速度个数:一个表可以有多个索引 常用索引类型:No ...

  9. js 原生转json 可以v8中运行

    // load("D:/jsontest.js"); function test1(vvv) { print(vvv); } //把json str 转 json obj func ...

  10. LDAP & Implementation

    LDAP & Implementation 一.什么是LDAP? (一)在介绍什么是LDAP之前,我们先来复习一个东西:“什么是目录服务?” 1. 目录服务是一个特殊的数据库,用来保存描述性的 ...