Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python 基础系列--字符串与编码

Python 基础系列--字符串与编码

作者头像
somenzz
发布于 2020-12-10 03:25:30
发布于 2020-12-10 03:25:30
92400
代码可运行
举报
文章被收录于专栏:Python七号Python七号
运行总次数:0
代码可运行

一旦走上编程这条路,如果不把编码这个问题搞清楚,那么它会像幽灵般纠缠你整个职业生涯。

字符串在编程中是使用频率最高的数据类型,像 web 网站中显示的中英文信息,使用记事本打开一个文本文件所看到的内容,软件呈现给用户的信息,包括你现在看到的文字,都属于字符串,可以说字符串无处不在。如果对字符串的编码不理解,编辑过程中非常容易出现乱码问题,相反如果懂编码,那么即使出现乱码,也可以自助解决。不同的编程语言对字符串的处理可能略有差异,但对字符串的编码原理却是相通的, 因此字符串和编码是每个准程序员必备知识,需要引起重视。

先说Python 字符串,再说编码

来自维基百科关于字符串的定义:

字符串(String),是由零个或多个字符组成的有限串行。一般记为s=a[1]a[2]…a[n]。

比如为众多程序员所周知的 "hello, world!"就是一个字符串,其实不管中文英文,能写出来让人们看到的信息都属于字符串。python3 中的 print() 函数用于打印字符串(在 python2 中 print 是一个命令,可以不带括号)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> s1="hello,world!"
>>> s2="世界,你好!"
>>> type(s1)
<class 'str'>
>>> type(s2)
<class 'str'>
>>> print(s1)
hello,world!
>>> print(s2)
世界,你好!
>>>

上文中定义了两个字符串变量 s1,s2,注意 python 是动态语言,不需要事先声明变量的类型,变量的类型由其实际的值决定,运行时可动态改变,是不是非常灵活?!查看变量的类型使用 type() 函数,这个在 debug时请经常使用。

一、Python 中的字符串

python 对字符串的处理非常灵活,对字符串常用到的操作有:

1.定义字符串

python中可以使用单引号',双绰号",三引号(三个单引号'''或三个双引号"""来定义一个字符串,其中三引号可方便的定义多行文本。如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> s='你好,欢迎来到清如許的公众号。'   #定义一个字符串s ,下同
>>> print(s)                                                   #打印字符串s,下同
你好,欢迎来到清如許的公众号。
>>> s="你好,欢迎来到清如許的公众号。"
>>> print(s)
你好,欢迎来到清如許的公众号。
>>> s='''你好,欢迎来到清如許的公众号。'''
>>> print(s)
你好,欢迎来到清如許的公众号。
>>> s="""你好,欢迎来到清如許的公众号。"""
>>> print(s)
你好,欢迎来到清如許的公众号。
>>> s="""你好, #定义多行文本,打印时按定义时的格式输出
... 欢迎来到清如許的公众号。"""
>>> print(s)
你好,
欢迎来到清如許的公众号。
>>> s='你好,欢迎来到"清如許"的公众号。'   #如果字符串中出现单引号、双引号,那么定义时不能使用相同的引号
>>> print(s)
你好,欢迎来到"清如許"的公众号。
>>> s="""你好,欢迎来到"清如許"的公众号。"""    #如果字符串中出现单引号、双引号,那么定义时不能使用相同的引号
>>> print(s)
你好,欢迎来到"清如許"的公众号。
>>> s="你好,欢迎来到\"清如許\"的公众号。"    #如果字符串中出现单引号、双引号,如果使用相同的引号定义,那么要使用\转义。
>>> print(s)
你好,欢迎来到"清如許"的公众号。
>>> s='欢迎\                               #如果在定义时一行写不下,可以使用\连接下一行,它们仍然是一行字符串
... 来到清如許的公众号'
>>> print(s)
欢迎来到清如許的公众号
>>> s='你好,\n欢迎来到清如許的公众号。'     #如果使用单引号或双引号打印多行文本,使用\n做为换行符
>>> print(s)
你好,
欢迎来到清如許的公众号。
>>>

这里需要注意的是如果字符串中含有单引号或双引号时,有两种方法处理:转义或使用与字符串中引号不同的引号来定义。 如果需要避免转义,我们可以使用原始字符串,即在字符串的前面加上’r’。如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> s = r"This is a rather long string containing\n\
... several lines of text much as you would do in C."
>>> print(s)
This is a rather long string containing\n\
several lines of text much as you would do in C.

2. 切片

python 中字符串其实是一个只读的数组,我们可以通过下标来访问字符串中的任意一个字符,请看下面交互式环境中的操作和注释:(交互式环境中的语句可以保存在后缀为.py文件中当作 python 程序来执行,类似shell 语法)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> s1="hello,world!"
>>> s2="世界,你好!"
>>> s1[0]     #python数据的下标从0开始,0表示字符串中第一个字符
'h'
>>> s1[1]
'e'
>>> s1[2]
'l'
>>> s1[-1]  # -1表示字符串中倒数第一个字符,是不是很容易记忆?!
'!'
>>> s1[-2]  # -2表示字符串中倒数第一个字符,是不是很容易记忆?!
'd'
>>> s2[0]   #中文字符串,也同样适用
'世'
>>> s2[1]
'界'
>>> s2[-1]
'!'

3.格式化字符串

格式化字符串的目的为了更方便打印字符串,先看一个例子: 文件名 lx_str_format.py

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#encoding=utf-8
yourname = "农夫三拳"

game = "王者荣耀"

num = 100

rate = 0.81236    # 注意 rate 最终的打印显示

welcome_string = f"你好,{yourname},欢迎来到{game},你已获得{num}次 MVP,平均胜率 {rate:.2%}"
welcome_string1 = "你好,{},欢迎来到{},你已获得{}次 MVP,平均胜率 {:.2%}".format(
    yourname, game, num, rate
)
welcome_string2 = "你好,{0},欢迎来到{1},你已获得{2}次 MVP,平均胜率 {3:.2%}".format(
    yourname, game, num, rate
)
welcome_string3 = "你好,{3},欢迎来到{0},你已获得{1}次 MVP,平均胜率 {2:.2%}".format(
    game, num, rate, yourname
)
welcome_string4 = "你好,%s,欢迎来到%s,你已获得%d次 MVP,平均胜率 %.2f%%" % (yourname, game, num, rate*100)

print(welcome_string)
print(welcome_string1)
print(welcome_string2)
print(welcome_string3)
print(welcome_string4)

这里使用了三种方法来格式化字符串:

(1)welcome_string 使用 F-strings,是 Python3.6 版本新引入的特性,是最简洁易读,效率也是最高的。 (2)welcome_string1,welcome_string2,welcome_string3 都使用了字符串的 format 函数来进行格式化,通过不同的索引来引用 format 函数的参数。 (3)welcome_string4 使用 % 来格式化字符串,类似C语言中的 printf 函数,不再详述。 三种方法都对 rate 做了 %的转换,并保留两位小数,可以看到在{}使用 ‘:.2%’ 即可显示两位的百分比。上述代码执行结果如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
你好,农夫三拳,欢迎来到王者荣耀,你已获得100MVP,平均胜率 81.24%
你好,农夫三拳,欢迎来到王者荣耀,你已获得100MVP,平均胜率 81.24%
你好,农夫三拳,欢迎来到王者荣耀,你已获得100MVP,平均胜率 81.24%
你好,农夫三拳,欢迎来到王者荣耀,你已获得100MVP,平均胜率 81.24%
你好,农夫三拳,欢迎来到王者荣耀,你已获得100MVP,平均胜率 81.24%

其中:F-strings 快速、易学、实用,能有效减少代码量,在实际使用中能使用 F-strings,能看懂其他两种方法即可

一些细节: 由于 F-strings 是在运行时进行渲染的,因此可以将任何有效的 Python 表达式放入其中。这可以让你做一些漂亮的事情,如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> f"{2 * 37}"
'74'
>>> f"{'lower'.upper()}"
'LOWER'
>>>

为了使字符串出现大括号,您必须使用双大括号,如果使用三个以上的大括号,则可以获得更多大括号:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> f"{{'hello'}}"
"{'hello'}"
>>> f"{{'hello'}}"*3  #字符串乘以几表示重复几次
"{'hello'}{'hello'}{'hello'}"
>>> f"{{{{{{74}}}}}}"  #第两个大括号输出一个大括号
'{{{74}}}'

打印一个整数的二进制、八进制、十六进制

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> f"十进制:{11},二进制:{11:b},八进制:{11:o},十六进制:{11:x}"
'十进制:11,二进制:1011,八进制:13,十六进制:b'
>>> f"十进制:{11},二进制:{11:#b},八进制:{11:#o},十六进制:{11:#x}"
'十进制:11,二进制:0b1011,八进制:0o13,十六进制:0xb'

对齐操作

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> s
'a'
>>> f"{s.center(10)}"  # 共10位,字符串s居中显示,默认以空格填充
'    a     '
>>> f"{s.center(10,'*')}"  # 共10位,字符串s居中显示,指定以'*'填充
'****a*****'
>>> f"{s.ljust(10,'*')}"  # 共10位,字符串s靠左对齐,指定以'*'填充
'a*********'
>>> f"{s.rjust(10,'*')}" # 共10位,字符串s靠右对齐,指定以'*'填充
'*********a'
>>> num=10
>>> f"{num:5d}"      # 整数对齐,默认以空格填充,右对齐
'   10'
>>> f"{num:f}"   # 以浮点数据显示
'10.000000'
>>> f"{num:.3f}"  # 以浮点数据显示3位小数
'10.000'
>>> num=1234567890
>>> f"{num:,}"
'1,234,567,890'        #智能显示大数字。

4.其他对象转字符串

在实际应用中,将数据(整数,浮点数据)转为字符串的需求是非常频繁的,python3 中有两种方法将其他对象转为字符串:repr(object),str(object)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> repr(49)
'49'
>>> str(49)
'49'
>>> repr(49.99)
'49.99'
>>> str(49.99)
'49.99'
>>> repr(-49.99)
'-49.99'
>>> str(-49.99)
'-49.99'
>>> repr("hello,world")
"'hello,world'"
>>> str("hello,world")
'hello,world'

大多数情况下,这二者没有区别,函数 str() 用于将值转化为适于人阅读的形式,而 repr() 转化为供解释器读取的形式,如果一个对象没有适于人阅读的解释形式的话,str() 会返回与 repr() 等同的值。很多类型,诸如数值或链表、字典这样的结构,针对各函数都有着统一的解读方式。字符串和浮点数,有着独特的解读方式。因此,作为初学者还是使用 str() 函数吧。

5. 其他常见操作

(1)遍历: 不需要下标

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> s2
'世界,你好!'
>>> for s in s2:
...     print(s)
...
世
界
,
你
好
!

需要下标:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> for i,s in enumerate(s2): #这是一种比较高效的方法,尽量不要使用 len(s0)...     print(f"s2[{i}] = {s}")
...
s2[0] = 世
s2[1] = 界
s2[2] = ,
s2[3] = 你
s2[4] = 好
s2[5] =

(2)判断字符是否在字符串中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> 'a' in 'ab'
True
>>> 'c' in 'ab'
False
>>> if 'a' in 'ab':
...     print("a is ab")
...
a is ab

(3)判断字符串中是否以某个字符串开始或结尾:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> "abcd".startswith("a")
True
>>> "abcd".endswith("cd")
True
>>>

(4)大小写转换、查找、替换、对齐、编码、分隔、去空等等,不再一一列举,使用时 help(str) 查找帮助即可。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
help(str)

二、字符串编码

我们都知道计算机底层只能处理数字,也就是 0 和 1,因此任何文件存储在磁盘上都是 0 和 1 的二进制流。我们看到的字符串都是这些二进制流经过一定的规则转化而来的。比如小写字母 'a',根据美国信息交换标准代码,即按 ASCII 码编码时,对应的十进制为整数 97,十六进制为 61 ,二进制为 1100001。保存在磁盘时,它就变成了二进制流 1100001,当从磁盘中读取文件时,1100001 按 ASCII 码解码,会转为 'a' 呈现在我们眼前。过程简写如下:

字符串------->编码------->二进制流 二进制流------->解码------->字符串

计算机在设计时就使用一个字节表示 8 位二进制位,因此我们称这里的二进制流称为字节串,即:

写文件:字符串------->编码------->字节串(在磁盘) 读文件:字节串------->解码------->字符串 (在内存)

注意:字符串是存储在内存中的,二进制流/字节是存储在硬盘或网络数据流中。

由于 ASCII 编码只占用一个字节,即 8 个二进制位,共有 2 的 8 次方个,也就是 256 种可能,完全可以覆盖英文大小写字符及特殊符号。而我们中文汉字远超过256个,使用 ASCII 编码的一个字节来处理中文显然是不够用的,于是中国制定了 GB2312 编码,使用两个字节,可以支持共 2 的 16 次方共 65536 种汉字,可以覆盖常用的中文汉字60370个(当代的《汉语大字典》(2010年版) 收字60,370个)及 ASCII 码。

比如 "清如许" 这个字符串以 GB2312 编码后的字节串如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> "清如许".encode('gb2312')  # 以 GB2312 编码(encode)得到
b'\xc7\xe5\xc8\xe7\xd0\xed'
>>> list("清如许".encode('gb2312'))  # list将其转为列表/数组,方便十进制查看
[199, 229, 200, 231, 208, 237]
>>>
>>> b'\xc7\xe5\xc8\xe7\xd0\xed'.decode('gb2312') # 字节串以 GB2312 解码(decode)得到字符串
'清如许'

我们可以看到 "清如许"在 GB2312 编码中共占用了 6 个字节,当然 GB2312 也是包含 ASCII 码的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> "abc".encode('gb2312')  #编码
b'abc'
>>> list("abc".encode('gb2312'))     #编码  ,十进制查看
[97, 98, 99]
>>> hex(97)
'0x61'
>>> hex(98)
'0x62'
>>> hex(99)
'0x63'
>>> b'\x61\x62\x63'.decode('gb2312')   #解码
'abc'

这仅仅是适用中文简体的一个编码,全世界有上百种语言,每个语言都设计自己独特的编码,这样计算机在跨语言进行信息传输时还是无法沟通(出现乱码)的,于是 Unicode 编码应运而生,Unicode 使用 2-4 个字节编码,已经收录136690个字符,并还在一直不断扩张中。 Unicode 起到了 2 个作用:

  • 直接支持全球所有语言,每个国家都可以不用再使用自己之前的旧编码了,用 Unicode 就可以了。(就跟英语是全球统一语言一样)。
  • Unicode 包含了跟全球所有国家编码的映射关系。

所有的系统、编程语言都默认支持 Unicode 。 Unicode 编码虽然统一了不同语言的编码不一致的问题,但是新的问题又来了,如果一段纯英文文本,用 Unicode 编码存储会比用 ASCII 编码多占用一倍空间!存储和网络传输时一般数据都会非常多,那么增加一倍空间是无法容忍的,为了解决上述问题,UTF 编码应运而生,UTF 编码将一个 Unicode 字符编码成 1~6 个字节,常用的英文字母被编码成 1 个字节,汉字通常是 3 个字节,只有很生僻的字符才会被编码成 4~6 个字节。注意,从 Unicode 到 UTF 并不是直接的对应,而是通过一些算法和规则来转换的。

  • UTF-8: 使用1、2、3、4个字节表示所有字符;优先使用1个字符、无法满足则使增加一个字节,最多 4 个字节。英文占1个字节、欧洲语系占2个、东亚占3个,其它及特殊字符占4个。
  • UTF-16: 使用2、4个字节表示所有字符;优先使用2个字节,否则使用4个字节表示。
  • UTF-32: 使用4个字节表示所有字符。

可以看出 UTF-8 编码是最节省存储的,也是目前最常用的编码,很多网页的源码上会有类似<meta charset="UTF-8" />的信息,表示该网页正是用的UTF-8编码。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> list("清如许".encode('utf8'))
[230, 184, 133, 229, 166, 130, 232, 174, 184]
>>> list("abc".encode('utf8'))
[97, 98, 99]
>>>

从上面的输出可以看出,中文在 utf8 编码中占用 3 个节点,英文还是占用 1 个字节,因此如果是中文文本以 utf8 编码保存占用的磁盘空间是 gb2312 编码保存的 1.5 倍。

编码的问题理解了,我们再来看下 Python3 代码的执行过程。

首先 Python3 解释器找到源代码文件,按源代码文件声明的编码方式解码内存,再转成 unicode 字符串。 把 unicode 字符串按照语法规则进行解释并执行,其中所有的变量字符都会以 unicode 编码声明。 读写文件过程如下图所示:

python源代码的编码解码过程

下面在 windows 上做个测试 编写 bm_test.py 保存为 utf8 编码,如下图所示:

bm.png

只要文件头部声明的编码和文件保存的编码一致,输出不会有乱码,推荐大家在编码过程都这样操作。

执行结果

但是如果 bm_test.py 不声明 # -- coding: utf-8 --,在默认编码为 gbk 的 windows 上执行仍会正常输出,这是因为到了内存里 python3 解释器把 utf-8 转成了 unicode , 但是这只是 python3, 并不是所有的编程语言在内存里默认编码都是 unicode ,比如 python2 的默认编码是 ascii ,python2 解释器仅以文件头声明的编码去解释你的代码,上述 bm_test.py 在 python2 中会以 utf-8 解码得到 utf-8 字符串,不会自动转为 unicode 字符串,这意味着在默认编码为 gbk 的 windows 上执行结果是乱码。

因为只有2种情况 ,你的 windows上显示才不会乱 (1)字符串以 GBK 字符串显示 (2)字符串是 unicode 编码 那么在 python2 中,需要你手工转换,在 windows 修改 bm_test.py 如下所示:

python2 中的 bm_test.py 执行结果

python 2 的执行结果

可以看出 Python3 容忍你的偷懒,而 Python2 却不行,还需要你手工转换,Python3 在编码方面比 Python2 是有明显进步的,建议初学者从 Python3 开始学习。 Python2 将在 2020 年停止更新。

总结:Python3 对字符串的处理是非常灵活的,有许多操作都可以一行代码完成,换成其他语言可能需要多写很多代码,如果了解关于字符串的详细信息,请使用 help(str) 来查询;对于字符编码问题,还是需要深入理解才行,这样在遇到任何编码的问题都可以迎刃而解。

如有读者针对文中内容有疑问,欢迎微信后台留言,会尽快回复。

(完)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-10-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python七号 微信公众号,前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【Python】Python基础
执行 Windows 方式一 D:\Python\python.exe D:\Python17\DAY01\Helloworld.py 方式二 D:\Python\python.exe Linux 方式一 [root@linux-node1 ~]# /usr/bin/python Helloworld.py 方式二 [root@linux-node1 ~]# python 方式三 [root@linux-node1 ~]# vim Helloworld.py #!/usr/bin/python
python亦希
2021/12/28
2.9K0
Python学习总结4--字符串和编码
一、编码历史     由于计算机是美国人发明的,因此,最早只有127个字符被编码到计算机里,也就是大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码,比如大写字母A的编码是65,小写字母z的编码是122。     但是要处理中文显然一个字节是不够的,至少需要两个字节,而且还不能和ASCII编码冲突,所以,中国制定了GB2312编码,用来把中文编进去。     Unicode应运而生。Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了     本着节约的精神,又出现了把Unicode编码转化为“可变长编码”的UTF-8编码
曼路
2018/10/18
4230
Python学习总结4--字符串和编码
详解Python字符串编码格式
最早的字符串编码是美国标准信息交换码ASCII,仅对10个数字、26个大写英文字母、26个小写英文字母及一些其他符号进行了编码。ASCII采用1个字节来对字符进行编码,最多只能表示256个符号。 随着信息技术的发展和信息交换的需要,各国的文字都需要进行编码,不同的应用领域和场合对字符串编码的要求也略有不同,于是又分别设计了多种不同的编码格式,常见的主要有UTF-8、UTF-16、UTF-32、GB2312、GBK、CP936、base64、CP437等等。UTF-8编码是国际通用的编码,以1个字节表示英语字
Python小屋屋主
2018/04/16
1.9K0
#10 Python字符串
通过上一节可知,Python6个序列的内置类型中,最常见的是列表和元组,但在Python中,最常用的数据类型却不是列表和元组,而是字符串。要想深入了解字符串,必须先掌握字符编码问题。因此本篇博文将讲解Python字符编码问题和Python字符串的具体方法!
py3study
2020/01/17
6530
Python 蛋疼的编码问题
Python 的编码问题早就困扰我太久了, 但一直没有看到比较通俗易懂的专门介绍 Python 编码问题的文章。 正好今天刷知乎看到了非常不错的文章, 这里稍微抛砖引玉归纳下。
Ewdager
2020/07/14
8550
Python 蛋疼的编码问题
python与字符编码小记
用python2的小伙伴肯定会遇到字符编码的问题。下面对编码问题做个简单的总结,希望对各位有些帮助。 故事零:编码的定义 我们从“SOS“(国际通用求助信号)开始,它的摩斯密码的编码是: “…---…”,想一下为什么选用S、O、S来作为求救信号?因为它简单,容易辨别且不容易发错呀! 那么,字符编码就是: ´给定一系列字符,对每个字符赋予一个数值,用数值来代表对应的字符,这一数值就是字符的编码。例如,我们给字符’A’赋予数值0x41,则0x41就是字符’A’的编码。字符编码是字符的表现、储存方式。 字符编
腾讯移动品质中心TMQ
2019/05/23
9150
python与字符编码小记
宝宝都能学会的python编程教程3:字符串和编码
字符串 在python3中已经全面支持中文。 由于Python源代码也是一个文本文件,所以,当你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为UTF-8编码。当Python解释器读取源代码时,为了让它按UTF-8编码读取,我们通常在文件开头写上这两行: #!/usr/bin/env python3# -*- coding: utf-8 -*- Python提供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符: 要计算str包含多少个字符,可以用len()函数: 在
企鹅号小编
2018/01/11
7760
宝宝都能学会的python编程教程3:字符串和编码
你真的知道Python的字符串是什么吗?
在《详解Python拼接字符串的七种方式》这篇推文里,我提到过,字符串是程序员离不开的事情。后来,我看到了一个英文版本的说法:
Python猫
2019/04/10
6640
你真的知道Python的字符串是什么吗?
AI 学习之路——轻松初探 Python 篇(三)
这是「AI 学习之路」的第 3 篇,「Python 学习」的第 2 篇 Python 字符串使用和 C 语言比较类似,但还有一些我们值得注意的地方需要关注,用这篇文章来帮助大家掌握 Python 的字符串吧! 编码 不论什么语言,我们都需要考虑一下这个语言的编码问题。「ASCII」编码是我们最熟悉的编码,但它只有 127 个字符被编码到计算机里面了,显然,像中日韩这类国家,语言文字比较特殊,就需要自己来指定编码格式。 比如,中国自己就制定了「GB2312」编码,韩文则是「EUC_KR」,俄语是「KOI8
小之丶
2018/03/07
7880
AI 学习之路——轻松初探 Python 篇(三)
Python基础教程之字符串和编码
1. 字符编码 由于计算机只能处理数字,如果要处理文本就必须将文本转换为数字才能处理,最早设计的时候采用8b 表示一个字节,一个字节能够表示的最大整数是255,如果要表示更大的整数,就必须用多个字节。另外由于计算机是美国人发明的,所以计算机早期只有127个字符被编码到计算机了,也就是Ascii码,后来要处理中文中国就指定了GB2312 ,但是其他国家也有自己的语言 然后就有了不同的标准, 所以就有组织将所有的统一成 Unicode编码。 2. python字符串 在python 中字符串支持多语言,py
执行上下文
2022/07/26
2550
Python标准数据类型-String(字符串)
在Python程序中,字符串类型'str'是最常用的数据类型。 可以使用单引号'' 双引号"" 三引号''''''来创建字符串。(单引号,双引号创建的字符串只能在一行,三引号创建的字符串可以分布在多行) 创建字符串的方法很简单,只需要为变量分配一个值即可
hacker707
2023/05/03
6460
Python标准数据类型-String(字符串)
python基础之字符编码
计算机由美国人发明,最早的字符编码为ASCII,只规定了英文字母数字和一些特殊字符与数字的对应关系。最多只能用 8 位来表示(一个字节),即:2**8 = 256,所以,ASCII码最多只能表示 256 个符号
py3study
2020/01/19
7300
python基础之字符编码
【愚公系列】2021年12月 Python教学课程 04-字符串
字符串是 Python 中最常用的数据类型之一,使用单引号或双引号来创建字符串,使用 三引号创建多行字符串。 Python 不支持单字符类型,单字符在 Python 中也是作为一个字符串使用。 字符串是不可变的序列数据类型,不能直接修改字符串本身,和数字类型一样! 虽然字符串本身不可变,但可以通过方括号加下标的方式,访问或者获取它的子串,当 然也包括切片操作。这一切都不会修改字符串本身,当然也符合字符串不可变的原则。
愚公搬代码
2021/12/13
4410
【愚公系列】2021年12月 Python教学课程 04-字符串
基础知识:字符编码
1、什么实字符编码:将人识别的字符转换成计算机能识别的01,而转换的过程或者规则就是字符编码表。
py3study
2020/01/17
5280
Python3.x 常用的新特性字符串编码格式:
print() 是函数,不是一个语句 raw_input()输入函数,改为 input() Python 3 对文本和二进制数据做了更为清晰的区分。 1 .文本由unicode表示,为str类型 2 .二进制数据由bytes (字节包)表示,为bytes类型 新增数据类型 bytes (字节包),代表二进制数据以及被编码的文本字符串前有个前缀b Python3中 bytes 与 str 转换 1 .str 可以编码(encode)成 bytes 2 .bytes 可以解码(decode)成 st
Python攻城狮
2018/08/23
4970
编码 | Python竟然有隐藏功能,只有极少人知道!
产生这样结果的原因是Python中默认的编码格式是 ASCII 格式,在没修改编码格式时无法正确打印汉字,所以在读取中文时会报错。
潘永斌
2020/01/13
4700
编码 | Python竟然有隐藏功能,只有极少人知道!
Python字符编码全解析
字符编码是计算机编程中不可回避的问题,不管你用 Python2 还是 Python3,亦或是 C++, Java 等,我都觉得非常有必要厘清计算机中的字符编码概念。本文主要分以下几个部分介绍: 基本概念 常见字符编码简介 Python 的默认编码 Python2 中的字符类型 UnicodeEncodeError & UnicodeDecodeError 根源 基本概念 字符(Character) 在电脑和电信领域中,字符是一个信息单位,它是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字
小小科
2018/05/04
1.4K0
Python字符编码全解析
Python之路-基础数据类型之字符串
我们在日常生活中会遇到很多类似的情况,例如吃饭排队叫号,在学校时会有学号,工作时会有工号,这些就是一种能保证唯一准确的手段,在计算机中也是一样,它就叫索引,也叫下标,
py3study
2020/01/19
5370
Python之路(二)Python基础
计算机从本质上来说只认识二进制中的0和1,可以说任何数据在计算机中实际的物理表现形式也就是0和1,所有的信息最终都表示为一个二进制的字符串,每一个二进制位(bit)有0和1两种状态。
py3study
2020/01/17
5740
《5》python字符串和编码
「5」python字符串和编码 字符编码 最早只有127个字符被编码到计算机里,也就是大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码,比如大写字母A的编码是65,小写字母z的编码是122。 中国制定了GB2312编码,用来把中文编进去。 Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。 但是,如果你写的文本基本上全部是英文的话,用Unicode编码比ASCII编码需要多一倍的存储空间,在存储和传输上就十分不划算。 本着节约的精神,又出现了把Unicode编码转化为“
企鹅号小编
2018/02/01
7980
《5》python字符串和编码
相关推荐
【Python】Python基础
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验