字符串和字符编码unicode

python基础第三天

字符串 str

作用:
用来记录文本(文字)信息,给人类识别用的,为人们提供注释解释说明
表示方式:
在非注释中,凡是用引号括起来的部分都是字符串
‘ 单引号
" 双引号
‘‘‘ 三单引号
""" 三双引号
空字符串的字面值表示方法
‘‘
""
‘‘‘
"""
单引号和双引号的区别:
  单引号的内的双引号不算结束符
  双引号的内的单引号不算结束符
扩展:因为解释执行器根据单引号为开始符往后找单引号作为结束符,要是双引号为开始符,往后找到双引号结束为止。

三引号字符串的作用:多行字符串
三引号字符串中的换行会自动转换为换行符
三引号内可以包含单引号和双引号
示例:

1 s = ‘welcome to beijing!\nI like python!\nI am Studing!‘
2 print(s)

隐式字符串字面值连接:注意:只用常量值才可以

1 s = "I‘m a tencher!" ‘My name is liuzhihua‘
2 >>> s
3 "I‘m a tencher!My name is liuzhihua"

如果一个字符串同时包含如下字符该怎么办?
用转义序列代表特殊字符
字符串字面值中,用字符反斜杠(\)
后跟一些字符代表特殊的一个字符
反斜杠转义字符表:
\‘ 单引号
\" 双引号
\‘‘‘ 三单引号
\""" 三双引号
\\ 一个反斜杠
\n 换行
\r 返回光标至首行
示例:

1 >>> print(‘ABCD\rab‘)
2 abCD

\t 水平制表符(有的终端默认4空格,有的默认8个空格)
\v 垂直制表符
\f 换页
\b 倒退
\0 空字符,字符值为空
\xXX XX为两位十六进制表示的字符 ASCII编码:ASCII表:$ man ascii
示例:print(‘\x41‘,‘\x42‘) 输出 A B
常用的ASCII编码:(0-127共128个(十进制))
字符 十进制 十六进制
‘0‘ --‘9‘ 48 --57 0x30--0x39
‘A‘ --‘Z‘ 65 --90 0x41--0x5a
‘a‘ --‘z‘ 97 --122 0x61--0x7a

Unicode

同一编码:分为Unicode16字符和Unicode32字符
\uXXXX XXXX个十六进制表示的Unicode16字符2**16=65536(0-65535)
\UXXXXXXXX 8个X十六进制表示的Unicode32字符2**32
计算机存储文字,是以图片形式保持,用整数返回
序列的概念
字符串就是序列
求序列的长度函数len
len(x) 返回字符串的字符个数

raw 字符串(原始字符串)
格式:
r‘字符串内容‘
r"字符串内容"
r‘‘‘字符串内容‘‘‘
r"""字符串内容"""
作用:
让转义符号\ 无效

在Python中,由“r”开头的作用=字符串的原始含义

dos = r"c:\news"

“例如r"c:\news",由r开头引起的字符串就是声明了后面引号里的东西是原始字符串,在里面放任何字符都表示该字符的原始含义。

这种方法在做网站设置和网站目录结构的时候非常有用,使用了原始字符串就不需要转义了。”

示例:

1 s = ‘C:\newfile\test.py‘
2 print(s)
3 print(len(s))
4
5 s = r‘C:\newfile\test.py‘
6 print(s)
7 print(len(s))

字符串的运算:
+ 加号运算符用于拼接字符串
* 运算符用于生产重复的字符串
示例:

1 s = "ABC" +"DEF" # s = "ABCDEF"
2 s1 = ‘123‘ * 3 # s1 = ‘123123123‘

注:同类型的数据才能相加,相乘只能和整数相乘

in / not in 运算符

作用:
用于判断某个字符串是否在当前字符串中出现过,如果出现过返回True,否则返回False。
扩展:字符串只要完整在当前字符串出现过就返回True

语法:
对象 in 字符串
示例:
s = ‘welcome to tarena‘
‘to‘ in s # True
‘wei‘ in s # False
‘welc‘ in s # True
字符串的比较运算
运算符:
> >= < <= == !=
规则:
依次从左到右按编码值进行比较,直到最短字符串结束为止。
比较的它们在计算机内数字编码(ASCII编码),比较出结果就不在比较。
示例:

1 ‘a‘ < ‘b‘ #True
2 ‘abc‘ < ‘abd‘ #True
3 ‘a‘ < ‘ab‘ #True
4 ‘abc‘ < ‘acb‘ #False
5 ‘a‘ > ‘1232443545‘ #True
6 ‘a‘ > ‘ASAADASDAAS‘ #True

字符串的索引操作(index)

索引

语法:
字符串[整数表达式]
说明:
Python序列都可以用索引来访问序列中的对象
Python 序列的正向索引是从0开始第二个索引是1,最后一个索引是len(s)-1.
Python 序列的反向索引最后是-1,倒数第二个索引是-2,第一个一个索引是-len(s).

切片(slice)

作用:
从一个字符串序列中取出相应元素重新组成一个字符串序列
语法:
字符串[(开始索引b):(结束索引e)(:(步长))]
注:小括号()括起的部分代表可以省略
说明:
1.开始索引是切片开始切下的位置,0代表第一个元素,1代表第二元素,-1代表最后一个元素
2.结束索引是切片的终止索引(但不包含终止点)
3.步长是切片每次获取完当前元素后移动的方向和偏移量。没有步长,相当于取值完成后向右移动一个索引位置
(步长默认是1)。
3.1.当步长为正数时,取正向切片:
开始索引为0,结束索引默认为len(s)
3.2.当步长为负数时,取反向切片:
默认的起始位置是最后一个元素,终止位置是第一个元素的前一个位置。

python字符串格式化符号

    符   号 描述
      %c  格式化字符及其ASCII码
      %s  格式化字符串
      %d  格式化整数
      %u  格式化无符号整型
      %o  格式化无符号八进制数
      %x  格式化无符号十六进制数
      %X  格式化无符号十六进制数(大写)
      %f  格式化浮点数字,可指定小数点后的精度
      %e  用科学计数法格式化浮点数
      %E  作用同%e,用科学计数法格式化浮点数
      %g  根据值的大小决定使用%f活%e
      %G  作用同%g,根据值的大小决定使用%f活%e
      %p  用十六进制数格式化变量的地址

格式化操作符辅助指令:

符号 功能
* 定义宽度或者小数点精度
- 用做左对齐
+ 在正数前面显示加号( + )
<sp> 在正数前面显示空格
# 在八进制数前面显示零(‘0‘),在十六进制前面显示‘0x‘或者‘0X‘(取决于用的是‘x‘还是‘X‘)
0 显示的数字前面填充‘0‘而不是默认的空格
% ‘%%‘输出一个单一的‘%‘
(var) 映射变量(字典参数)
m.n. m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话)

Python转义字符

在需要在字符中使用特殊字符时,python用反斜杠(\)转义字符。如下表:

转义字符 描述
\(在行尾时) 续行符
\\ 反斜杠符号
\‘ 单引号
\" 双引号
\a 响铃
\b 退格(Backspace)
\e 转义
\000
\n 换行
\v 纵向制表符
\t 横向制表符
\r 回车
\f 换页
\oyy 八进制数yy代表的字符,例如:\o12代表换行
\xyy 十进制数yy代表的字符,例如:\x0a代表换行
\other 其它的字符以普通格式输出

函数

python3中常用与序列的函数
len(x) 返回序列的长度
max(x) 返回序列的最大值
min(x) 返回序列的最小值
示例:

1 s = ‘hello‘
2 len(s) >>> 5
3 max(s) >>> ‘o‘
4 min(s) >>> ‘e‘

字符串编码转换函数:
ord(c) 返回一个字符的Unicode值

1 >>> ord("宋")
2 23435
3 >>> ord("红")
4 32418

chr(i) 返回这个整数值所对应的字符
整数转字符串函数
bin(i) 把整数转换给二进制字符串
oct(i) 把整数转换给八进制字符串
hex(i) 把整数转换给十六进制字符串
字符串构造函数:
str(obj = ‘‘) 将对象转换为字符串
示意:
‘123‘ + 456 # 出错,不合法
str(True) #‘True‘
str(None) #‘None‘
str(3.14) #‘3.14‘
常用的字符串方法(method):
语法:
对象名.方法(方法传参)
示例:s = ‘abc‘
s.alpha()
文档参见:
isdigit() :判断全部是否为数字,全部为数字则返回True,否则返回False。
isalpha() :判断全部是否为字母,全部为字母则返回True,否则返回False。
isupper() :判断字母否是全部为大写,是则返回True,否则返回False。
islower() :判断字母否是全部为小写,是则返回True,否则返回False。
count(s,start,end) :返回子串在字符串个数,开始和结束位置可以不选择
find(s,start,end) :返回子串在字符中索引的位置,没有找到则返回-1
upper() :把字符串的字母全部转化为大写
lower() :把字符串的字母全部转化为小写
strip() :删除字符串左右两边的空格
lstrip() :删除字符串右两边的空格
rstrip() :删除字符串左两边的空格
startswith(s,start,end) :检查开始的字符是否
endswith(s,start,end) :检查结束的字符是否
center(number,[fill]) :把字符按照输入的数字空格排放在中心,其他的地方填充
replace(old,new,count) :

练习:
1.输入一个字符串用变量s绑定
  1.1判断你输入的字符串有几个空格
  1.2讲原字符串的左右空白字去掉,打印出剩余的字符个数
  1.3判断你输入的是否数字
  1.4如果是数字,判断这个数字是否大于100.
2.输入三行文字,让这三行文字在一个方框内居中显示:
如输入:
hello!
I‘m studing python
I like python
显示如下:
+----------------------------+
| hello! |
| I‘m studing python |
| I like python |
+----------------------------+
注意:请不要输入中文

 1 #符串work.py
 2 #1.写一个程序,输入一段字符串,如果字符串不为空,把第一个字符的编码值打印出;
 3 #2.写一个程序,输入整数值(0--65535),打印出这个数值对应的字符。
 4 while True:
 5
 6     s = input(‘请输入:‘)
 7     if s == ‘‘:
 8         print(‘你输入的是空的字符串‘)
 9     else:
10         print(s,‘这个字符串第一个字符的编码值是‘,ord(s[0]))
11     i = int(input(‘请输入0至65535之间的一个整数:‘))
12     print(i,"这个整数对应的字符是",chr(i))
13     choice = input("输入0退出,按其他继续输入")
14     if choice == ‘0‘:
15             break
 1 #字符串.py
 2 #输入一个字符串,把字符串的第一个字符和最后一个字符去掉,打印出处理的结果。
 3 #输入任意字符串,判断这个字符串是否回文:回文示例:上海自来水来自海上
 4 while True:
 5     s = input("请输入:")
 6     print(‘原来字符串:‘,s,"去掉第一和最后一个字符的处理结果:",s[1:-1])
 7     #l=len(s)//2
 8     #if s[0:l+1] == s[-1:-(l+2):-1]: #拿前后半段来对比
 9     if s == s[::-1]: #直接反向排序来对比
10         print(s,‘是回文‘)
11     else:
12         print(s,‘不是回文‘)
13     choice = input(‘输入0退出,按其他继续输入:‘)
14     if choice == ‘0‘:
15         break
 1 # 1.输入一个字符串用变量s绑定
 2 #         1.1判断你输入的字符串有几个空格
 3 #         1.2将原字符串的左右空白字去掉,打印出剩余的字符个数
 4 #         1.3判断你输入的是否数字
 5 #         1.4如果是数字,判断这个数字是否大于100.
 6 while True:
 7     s = input(‘请输入:‘)
 8     space = s.count(‘ ‘)
 9     s1 = s.replace(‘ ‘,‘‘)
10     l = len(s1)
11     print(s,"你输入的字符串有",space,‘空格‘)
12     print(‘去掉‘,space,‘空格后‘,‘剩余的字符个数:‘,l)
13     if s.isdigit():
14         if int(s) <= 100:
15             print(int(s),‘小于等于100‘)
16         else:
17             print(int(s),‘大于100‘)
18     else:
19         print(s,‘不是一个纯数字字符串‘)
20     choice = input("按0退出,按其他请继续输入")
21     if choice == ‘0‘:
22         break
 1 # 2.输入三行文字,让这三行文字在一个方框内居中显示:
 2 #         如输入:
 3 #             hello!
 4 #             I‘m studing python
 5 #             I like python
 6 #         显示如下:
 7 #         +----------------------------+
 8 #         |           hello!           |
 9 #         |     I‘m studing python     |
10 #         |       I like python        |
11 #         +----------------------------+
12 #         注意:请不要输入中文
13 while True:
14     s = input(‘请输入‘)
15     s1 = input(‘请输入‘)
16     s2 = input(‘请输入‘)
17     print(‘+‘+‘-‘*30+‘+‘)
18     print(‘|‘+s.center(30)+‘|‘)
19     print(‘|‘+s1.center(30)+‘|‘)
20     print(‘|‘+s2.center(30)+‘|‘)
21     print(‘+‘+‘-‘*30+‘+‘)
22     print(‘=‘*(lenght+4))
23     #方法2
24     lenght = max(len(s),len(s1),len(s2))#来控制宽度
25     print(‘+‘+‘-‘*(lenght+2)+‘+‘)
26     print(‘|‘+s.center(lenght+2)+‘|‘)
27     print(‘|‘+s1.center(lenght+2)+‘|‘)
28     print(‘|‘+s2.center(lenght+2)+‘|‘)
29     print(‘+‘+‘-‘*(lenght+2)+‘+‘)
30     choice = input("按0退出,按其他请继续输入")
31     if choice == ‘0‘:
32         break

原文地址:https://www.cnblogs.com/Alan-Song/p/9614197.html

时间: 2024-11-08 15:36:57

字符串和字符编码unicode的相关文章

python的u&#39;字符串&quot;(字符编码):字符串前有u,表示字符串以unicode格式存储

举个例子 >>> s = u'\u6ce8\u91ca' >>> s u'\u6ce8\u91ca' >>> print s 注释 >>> print type(s) <type 'unicode'> >>> print s.encode('gbk') 注释 字符串前加u表示为unicode编码,而当前文本的unicode编码 可以设定, 比如utf-8编码就是第一行加上: # -*- coding: u

Python中的字符串与字符编码

原文地址:点击这里 本节内容: 前言 相关概念 Python中的默认编码 Python2与Python3中对字符串的支持 字符编码转换 一.前言 Python中的字符编码是个老生常谈的话题,同行们都写过很多这方面的文章.有的人云亦云,也有的写得很深入.近日看到某知名培训机构的教学视频中再次谈及此问题,讲解的还是不尽人意,所以才想写这篇文字.一方面,梳理一下相关知识,另一方面,希望给其他人些许帮助. Python2的 默认编码 是ASCII,不能识别中文字符,需要显式指定字符编码:Python3的

彻底搞懂字符编码(unicode,mbcs,utf-8,utf-16,utf-32,big endian,little endian...)[转]

最近有一些朋友常问我一些乱码的问题,和他们交流过程中,发现这个编码的相关知识还真是杂乱不堪,不少人对一些知识理解似乎也有些偏差,网上百度, google的内容,也有不少以讹传讹,根本就是错误的(例如说 unicode编码是两个字节),各种软件让你选择编码的时候,常常是很长的一个选单,让用户不知道该如何选.基于这样的问题,我就写下我的理解吧,一方面帮助一些需要帮助的人纠正认识,一方面作为自己以后备查的资料. 1. ASCII(American Standard Code for Informati

字符编码unicode,utf-8和ascii

Ascii编码 由于计算机是美国人发明的,因此,最早只有127个字符被编码到计算机里,也就是大小写英文字母.数字和一些符号,这个编码表被称为ASCII编码,比如大写字母A的编码是65,小写字母z的编码是122. 但是要处理中文显然一个字节是不够的,至少需要两个字节,而且还不能和ASCII编码冲突,所以,中国制定了GB2312编码,用来把中文编进去. 你可以想得到的是,全世界有上百种语言,日本把日文编到Shift_JIS里,韩国把韩文编到Euc-kr里,各国有各国的标准,就会不可避免地出现冲突,结

采用霍夫曼编码(Huffman)画出字符串各字符编码的过程并求出各字符编码 --多媒体技术与应用

题目:有一个字符串:cabcedeacacdeddaaaba,问题: (1)采用霍夫曼编码画出编码的过程,并写出各字符的编码 (2)根据求得的编码,求得各编码需要的总位数 (3)求出整个字符串总编码长度,并计算出字符串位数在编码前与编码后的比值 解答: (1)各字符出现频率统计如下表所示. |符号 |出现次数 |出现频率| |--|--|--| | a |7|0.35| |b|2|0.1| |c|4|0.2| |d|4|0.2| |e|3|0.15| 编码过程如下图所示: 各字符编码如下表所示:

一句话理解字符编码(Unicode ,UTF8,UTF16)

Unicode和ASCII码属于同一级别的,都是字符集,字符集规定从1到这个字符集的最大范围每个序号都各表示什么意思.比如ASCII字符集中序号65表示"A". 那接下来的UTF8和UTF16就相当于我们在计算机中怎么表示这个序号了.这就好比,通常情况下我们用十进制表示数字(1表示一个,2表示两个).但是有时候我们也会根据情况用二进制,八进制,十六进制表示. UTF8编码规则表示一个序号可能用一个字节/两个字节/三个字节来表示.UTF16编码规则表示一个序号只会用两个字节表示.其他的编

黑马程序员——Java基础——IO流(三)—序列流、管道流、RandomAccessFile类、操作基本数据类型的流对象、操作数组和字符串、字符编码

第一讲 对象序列化(持久化) 一.概述:就是把对象封存在硬盘,可以保持数据:关键类:ObjectInputStream和ObjectOutpurStream 二. 关键字:ObjectOutputStream:方法有writerObject()读取 ObjectInputStream 方法有readObject() 被序列化的对象需要 implements Serializable关于被序列化的类需要实现Serializable它等于一个撮,标识用的,改变类里面的语句就变了.如果想固定一个撮,可

Delphi与字符编码(实战篇)(MultiByteToWideChar会返回转换后的宽字符串长度)

本文目标: 了解Delphi的字符串类型 字符编码的检测与转换 简体繁体转换 0. 导言 看完“.Net与字符编码(理论篇)”,我们明白了字符是自然语言中的最小单位,在存储和传输的过程中可以使用三种编码方法:ASCII.DBCS以及Unicode.常见的DBCS编码有GB2312.GBK和BIG5,而UTF-8.UTF-16和UTF-32则是最常用的Unicode编码类型. 1. 字符串类型 在Delphi中有两种字符串类型:AnsiString和WideString.AnsiString被称为

Python3 是如何解决棘手的字符编码问题的?

Python3 最重要的一项改进之一就是解决了 Python2 中字符串与字符编码遗留下来的这个大坑.本文就和大家一起来扒一扒python3是如何解决的字符编码问题,希望对大家学习python3有所帮助. Python2 字符串设计上的一些缺陷: · 使用 ASCII 码作为默认编码方式,对中文处理很不友好. · 把字符串的牵强地分为 unicode 和 str 两种类型,误导开发者 当然这并不算 Bug,只要处理的时候多留心也可以避免这些坑.但在 Python3 两个问题都很好的解决了. 首先