【F-python基础编程】字符串1

版权声明:转载请声名出处,谢谢 https://blog.csdn.net/u010591976/article/details/81946631

1-字符串与编码:

只有127个字符被编码到计算机里,也就是大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码,Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。
在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码;浏览网页的时候,服务器会把动态生成的Unicode内容转换为UTF-8再传输到浏览器。捋一捋ASCII编码和Unicode编码的区别:ASCII编码是1个字节,而Unicode编码通常是2个字节。
计算机内存使用浏览网页

2-Python的字符串

在最新的Python 3版本中,字符串是以Unicode编码的,Python的字符串支持多语言。
由于Python的字符串类型是str,在内存中以Unicode表示,一个字符对应若干个字节。如果要在网络上传输,或者保存到磁盘上,就需要把str变为以字节为单位的bytes。Python对bytes类型的数据用带b前缀的单引号或双引号表示
以Unicode表示的str通过encode()方法可以编码为指定的byte,反之用denconde()

 'ABC'.encode('ascii')
#输出b'ABC'
 b'ABC'.decode('ascii')
#输出'ABC'

len()函数计算的是str的字符数,如果换成bytes,len()函数就计算字节数

格式化字符串:

  • %运算符就是用来格式化字符串。在字符串内部,%s表示用字符串替换,%d表示用整数替换,有几个%?占位符,后面就跟几个变量或者值,顺序要对应好。如果只有一个%?,括号可以省略。

占位符 替换内容
%d 整数
%f 浮点数
%s 字符串
%x 十六进制整数
其中,格式化整数和浮点数还可以指定是否补0和整数与小数的位数:

print('%10d-%0d' **%** (3,1)) #d前面表示补0
print('%9d' % 30)
print('%.4f' % 3.1415926) #.4表示保留小数后四位
print('percent = %d %%' % 97) #字符串里面的%是一个普通字符,要转义,用%%来表示一个%

输出

         3-1
       30
3.1416
percent = 97 %
  • 另一种格式化字符串的方法是使用字符串的format()方法,它会用传入的参数依次替换字符串内的占位符{0}、{1}……,不过这种方式写起来比%要麻烦得多

R = (85-72)/72
print(‘hello,%s 成绩提高了 %.1f%%’ % (‘小明’, R))
print(‘hello,{0},成绩提高了 {1:.1f}%’.format(‘小明’, R))

输出

hello,小明 成绩提高了 0.2%
hello,小明,成绩提高了 0.2%

  • 字符串切片
name = 'abcdefghijk'
#默认正序
print(name[2:-1])   #第一个参数为开始索引,第二个参数为截至索引,截至位取不到。
print(name[2:-1])   #末尾一位的索引为-1,因此最后一位取不到

#倒序 最后一个元素的索引为-1
print(name[ -1:0:-1])   #倒序,从最后以为开始取字符串一直到开头,索引为0的位置取不到
print(name[ -1: :-1])   #倒序,从最后以为开始取字符串一直到索引为0的位置
print(name[ : :-1])     #倒序,从右开始取字符串
print(name)

输出:

cde
cdefghij
kjihgfedcb
kjihgfedcba
kjihgfedcba
abcdefghijk

字符串下标与切片

字符串的操作@python
这里写图片描述这里写图片描述这里写图片描述

3-python中字符串数据结构

讨论字符串,首先要有一个确定的字符集
“字符”是一个抽象概念,字符集是有穷的一组字符构成的集合
人们经常考虑在计算机里使用的的标准字符集,实际上,完全可以拿任意数据元素的集合作为字符集
字符串(简称串)是特殊的线性表,表中元素取值选定的字符集其不同于一般表的特点是支持一组以串为对象的操作
长度:串中字符的个数称为串的长度 len()
长度为0 的串称为空串
在任意一个字符集里,只有唯一的一个空串
与一般的表类似:
- 字符串里的字符顺序排列,串里的每个字符有其确定位置
- 我们用0 开始的自然数表示初始位置

字符串表示的两个问题:
串内容存储。两个极端:
1,连续存储在一块存储区;
2,一个字符存入一个独立存储块,链接起来。也可以采用某种中间方式,把串中字符分段保存在一组存储块里,链接起这些存储块
串结束的表示,不同字符串长度可能不同,必须表示串到哪里结束。
两种基本方式:
1,用专门数据域记录字符串长度
2,用一个特殊符号表示串结束*(例如C 语言的字符串采用这种方式)*
Python 采用一体式的连续形式表示str 对象,见下图:
python字符串一体式的连续形式

  • 字符串相等:串的相等基于字符集里的字符定义:s1 和s2 相等,如果其长度相等,而且对应位置的各对字符分别相同,用 数学 = 表示两个字符串相等
  • 字典序。数学运算符 < 表示字符串排在前面,从左向右查看两个串中下标相同的各对字符,遇到的第一对字符的字符顺序决定了这两个字符串的大小;另外,如果两个字符串中相同下标的各对字符都相同,但是其中一个串比较小,那么就认为它比较小,排在前面。 对于任意两个字符串,数学运算符 = < > 三个必定有一个成立
  • 字符串拼接:s 的长度等于s1 和s2 的长度之和,在Python 里字符串拼接运算用+ 表示
  • 子串关系: s2 = s +s2+s’ 就说s1是s2的子串,s1也可以在s2中多次出现,如果多次出现,不同的出现也可能不是独立存在的,可以相互重叠
  • 前缀和后缀 前缀:一个字符串中必须包括第一个字符的任意字符; 后缀:必须包括最后一个字符的任意字符
  • 其他串计算: s*n n个s字符串的拼接

4-字符串匹配(子串查找)

�� 最重要的字符串操作是子串匹配,称为字符串匹配(string matching)
或字符串查找(string searching) { 有教科书称为模式匹配(pattern
match),但实际上模式匹配是内涵更广的概念。}
字符串匹配问题:见博客【A-字符串匹配python实现】
假设有两个串(ti, pj 是字符)
t = t0t1t2 … tn-1 称为目标串
p = p0p1p2 … pm-1 称为模式串
通常有m << n。字符串匹配就是在t 中查找与等于p 的子串的过程


参考资料:
廖雪峰python学习网站
数据结构与算法实现 裘宗燕

猜你喜欢

转载自blog.csdn.net/u010591976/article/details/81946631
今日推荐