Python序列类型之字符串详解

字符串(str)
关于引号:Python中有3种引号。分为单引号、双引号、三引号。python中单引号’‘和双引号""没有区别,如a=’abc’,a=’’abc’’。三引号就是连敲三次单引号,不表示字符串,它用来多行注释,并且多行注释没结束(没出现第二个三引号)可以随便换行。若引号中还要加引号需要交叉使用,即外面单引号里面双引号,外面双引号里面单引号。
一对单引号或双引号加上引号内的字符就是字符串,字符串中间不可以换行,想换行显示在换行处敲一个\n。

>>> a=‘abcd‘
>>> b="efgh"
>>> type(a)
<class ‘str‘>
>>> type(b)
<class ‘str‘>
>>> c=‘ab"c"de‘
>>> print(c)
ab"c"de
>>> d=‘abc\ndefgh\nijk‘
>>> print(d)
abc
defgh
ijk

字符串的显示:解释器显示字符串时保留字符串原来的样子,如果print字符串显示的是客户看得到的效果,两端没引号。

>>> a=‘Hello world!‘
>>> a
‘Hello world!‘
>>> print(a)
Hello world!

str字符串和repr字符串(原始字符串)
我们平时写代码和打印的都是str字符串。str字符串写的时候要加引号,print str字符串时结果都是两端无引号,转义后的字符串。若想原样打印字符串,使用repr函数将str转换成原始字符串。

>>> print(str(‘Hello \nworld !‘))
Hello
world !
>>> print(repr(‘Hello \nworld !‘))
‘Hello \nworld !‘

转义符:\符号就是转义符,其功能是将后面紧跟的一个字符由普通意思转成特殊意思。若\后是引号,则取消其表示字符串的功能。若\后是字母,有时表示特定含义,如\n表示换行符,\t表示制表符。若不想转义需要在字符串前加小写r(将str转换成repr原始字符串)或者在\后再加一个\变成\。当我们打印文件路径时,防转义就特别有用。
转义符同样适用于表达式和语句。

>>> a=r‘abc\ndef\ngh‘
>>> print(a)
abc\ndef\ngh
>>> a=‘abc\\ndef\\ngh‘
>>> print(a)
abc\ndef\ngh
>>> b=‘Let‘s go‘
File "<stdin>", line 1
b=‘Let‘s go‘
^
SyntaxError: invalid syntax
>>> b=‘Let\‘s go‘
>>> b
"Let‘s go"

我们看到’Let’s go’会报错,因为机器不知道从哪里结束字符串。如果加一个\,紧跟的单引号就不再表示字符串。
注意使用repr()时打印原始字符串两端有引号,使用前端加r, 原始字符串打印时只防转义,两端无引号。
str和repr字符串都不能以\结尾,否则报错。若想以\结尾可以将\拆出单作为一个字符串,\写成\,如下:

>>> print(r‘C:\Program files\foo\bar‘‘\\‘)
C:\Program files\foo\bar\

关于编码

  我们从头说说编码是怎么回事。
  最初的电脑是怎么显示字符的呢?
  在电脑诞生不久,美国人创造了ASCII字符集,字符集中包含128个字符,这些字符就是我们键盘上的所有字符。每一个字符有一个编号(字符码),这个编号是10进制的,从0-127。然后将字符码从10进制转换成2进制。我们知道127转换成2进制是1111111,所以最多只要7位就能将128个ASCII字符全部表示。
  怎么储存ASCII字符呢?
  我们知道电脑的最小储存单位是字节(byte),一个字节有8位(bit),一个位上只能写0或1,所以一个字节能显示28=256个信息。而ASCII字符只占7位,所以字节第一位表示是否启用ASCII字符集,后7位表示字符。这样,只用一个字节就能储存所有的ASCII字符。
  但是世界上有很多字符,比如光是中文就有六万多个字,怎么表示呢。
  最初中国创建了自己的字符集,叫国标字符集,简写是GB。GB的字符码采用16进制,一个汉字的储存空间是2 byte。
  再后来为了国际上的交流方便,世界上推出了Unicode字符集,该字符集中包含多国文字。Unicode有两个版本,分别是UCS-2(2 byte)和UCS-4(4 byte),每个字都是固定的储存空间。可是每个字都用4个byte储存不是太浪费了吗?像英文字母,完全可以一个byte就行了,所以为了节约空间,又在Unicode字符集的基础上发明了UTF编码储存方法,有UTF-8、UTF-16、UTF-32。UTF-8的储存机制是这样的:若某个Unicode字符码转成2进制后会占用n个byte,则将这串2进制数填入到一个格式中|n个1110……|10……|10……。把2进制按顺序填入到……中即可,| |表示一个byte,若n大于2,再加一个byte显示1110。这个编码机制可以节约常用字符的储存空间,一般只用3个字节而不是4个字节来储存字符。
  Python中的英文、中文、阿拉伯数字都是采用Unicode编码来表示文本,编码默认采用UTF-8。Unicode中每个字符都采用一个字符码(code point)表示,且全世界统一,这样在不同的软件上都能显示相同的字符。
  怎样调取其他Unicode字符呢,有一个通用机制:使用字符的字符码(16或32位)或Unicode名称。获取字符的字面量或名称请登录http://unicode-table.com。 下面分别举例16位字符码、32位字符码、名称。 (解释器可能显示不出笑脸和猫,将代码拷贝到博客或有道云笔记的代码块中就看见了)

>>> ‘\u00c6‘
‘Æ‘
>>> ‘\U0001F60A‘
‘??‘
>>> ‘\N{Cat}‘
‘??‘

原文地址:https://www.cnblogs.com/Nonstopcoding/p/11183081.html

时间: 2024-10-08 17:35:35

Python序列类型之字符串详解的相关文章

整型和布尔类型的转换 &amp; 字符串详解 &amp; for循环

整型以及布尔值转换 整型 整型----数字(int)用于比较和运算 32位: -2 ** 31 - 2** 31-1 64位:-2 ** 63 - 2** 63-1 + - * / // ** % 十进制,二进制,十六进制,八进制,二进制 十进制表示方法:123456 二进制表示方法:0101 十进制--二进制(从下往上?2) 15 1 7 1 3 1 1 1 #################### 188 0 94 0 47 1 23 1 11 1 5 1 2 0 1 1 # 从下往上计算

一起学python 三 --字符串详解,for循环

1.整型 n = 56 print(n.bit_length()) #查看值用几位(bit) # python2 中有长整型 long # python3 中全都是整型 2.bool True False print(boll(num)) #非0数字输出Ture 数字0输出False 所有空的都是False 0,None,[],{},(),"" print(int(True)) 1 print(int( False)) 0 ## 字符串转布尔值的时候,只要不为空就是Ture3.字符串详

Python中的高级数据结构详解

这篇文章主要介绍了Python中的高级数据结构详解,本文讲解了Collection.Array.Heapq.Bisect.Weakref.Copy以及Pprint这些数据结构的用法,需要的朋友可以参考下 数据结构 数据结构的概念很好理解,就是用来将数据组织在一起的结构.换句话说,数据结构是用来存储一系列关联数据的东西.在Python中有四种内建的数据结构,分别是List.Tuple.Dictionary以及Set.大部分的应用程序不需要其他类型的数据结构,但若是真需要也有很多高级数据结构可供选择

[转]notepad++正则表达式替换字符串详解

原文:http://blog.csdn.net/qinboecjtu/article/details/6035028 正则表达式是一个查询的字符串,它包含一般的字符和一些特殊的字符,特殊字符可以扩展查找字符串的能力,正则表达式在查找和替换字符串的作用不可忽视,它 能很好提高工作效率. EditPlus的查找,替换,文件中查找支持以下的正则表达式: 表达式 说明 /t 制表符. /n 新行. . 匹配任意字符. | 匹配表达式左边和右边的字符. 例如, "ab|bc" 匹配 "

Python读写文本文档详解

以下3步问正确的程序片段: 1.写文件 #! /usr/bin/python3 'makeTextFile.py -- create text file' import os def write_file(): "used to write a text file." ls = os.linesep #get filename fname = input("Please input filename:") while True: if os.path.exists(

c++字符串详解(转)

c++字符串详解(转) 之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必担心内存是否足够.字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要.我们可以用 = 进行赋值操作,== 进行比较,+ 做串联(是不是很简单?).我们尽可以把它看成是C++的基本数据类型.    好了,进入正题………首先,为了在我们的程序中使用string类型,我们必须包含头文件 <string>.如下:    #inclu

HTTP 状态码及对应字符串详解

HTTP 请求报文 l HTTP Command: //方法字段,说明其使用的是GET 方法 l URI: / //URL 字段,发送请求至保存该网站的服务器. l HTTP Version: //http 协议版本字段,用是的http/1.1 版本 l Accept: //指示可被接受的请求回应的介质类型范围列表. l Accept-Language: //限制了请求回应中首选的语言为简体中文,否则使用默认值. l Accept-Encoding: //限制了回应中可接受的内容编码值,指示附加

Python中的getattr()函数详解:

Python中的getattr()函数详解: getattr(object, name[, default]) -> value Get a named attribute from an object; getattr(x, 'y') is equivalent to x.y. When a default argument is given, it is returned when the attribute doesn't exist; without it, an exception i

python命名空间与闭包函数详解

python命名空间与闭包函数详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客主要介绍的知识点如下: 1>.三元运算 2>.命名空间 3>.global与nonlocal 4>.函数即变量 5>.嵌套函数 6>.闭包函数 一.三元运算 1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 #@author :yinzhengjie 4 #blog:http://www.cnblogs.com/yi