欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Day3—字符串

程序员文章站 2022-07-14 19:56:55
...

题外:计算机的数据存储

计算机在存储数据的时候,都是以二进制的形式存储在计算机中的。并且数据存储时,存的是一个数的“补码”。原码, 反码, 补码是计算机存储一个具体数字的编码方式。

  1. 原码
    正数的原码:符号位的值是0,后面是数值的大小。
    负数的原码:符号位的值是1。
    例如:
需储存的数(十进制) 转换为二进制 源码表示
10 1010 00001010
-10 ~ 10001010
  1. 反码
    正数的反码:符号位的值是0,后面是数值的大小。
    负数的反码:符号不变,后面的每一位的值相比较正数取反(即0→1,1→0)。
    例如:
需储存的数(十进制) 转换为二进制 源码表示
10 1010 00001010
-10 ~ 11110101
  1. 补码
    正数的补码:符号位的值是0,后面是数值的大小。
    负数的补码:反码值+1。
    例如:
需储存的数(十进制) 转换为二进制 源码表示
10 1010 00001010
-10 ~ 11110110

1 认识字符串

1.1 什么是字符串

  • a.用单引号或者双引号括起来的字符集就是字符串。
  • b.字符串中每个独立的单元我们叫字符,例如字符串'ab12'中的'a'、'b'、'1'、'2'就是字符。

1.2 转义字符

即通过“\”号将一些特殊的字符转换成一个具有特殊功能或者特殊意义的字符。
说明:python中没有字符类型,如果要表示字符,就是用长度为1的字符串表示。

常见的几种转义符:\n(换行)、\t(制表符--Tab)、\r(回车)、\f(换页)等等;
其它还有反斜杠号(\)、单引号(')、双引号(")在前面加上反斜杠号即可在字符串中原样显示。

1.3 Unicode编码

  • Python中字符的编码采用的是Unicode编码。
  • Unicode采用两个字节对一个字符进行编码(),能够将世界上所有符号编码。
  • Unicode编码包含了ASCII码。
    将字符串转换成指定的数值,这个过程就是编码(编码的目的是方便计算机储存);将数值转换成对应的符号的过程就是反编码。
# 转换
# 1)将Unicode码转换成字符:chr(编码)
print(chr(0x4e03))

# 2)将字符转换成Unicode编码:ord(字符),其结果为十进制
print(hex(ord('曾')))  # hex()将十进制转换成十六进制 

执行以上代码,输出结果为:


0x66fe

2 获取字符串

字符串实质可以看成是一个不可变的序列,序列的内容就是字符。一旦字符确定,那么里面的字符和字符的位置就不可变了。

2.1 获取单个字符

python中的字符串,可以通过下标(索引)来获取指定位置上的字符:字符串[索引]

说明:

  • a.字符串可以是字符串值,也可以是字符串变量
  • b.[]:中括号是固定语法
  • c.索引:从0开始到字符串长度减1。-1 ~ -长度(-1对应的是最后一个字符,-2对应倒数第二个字符)。索引不能越界,否则会报错(产生异常)。
    示例代码:
str1 = 'abcd'

print(str1[0]) 
print(str1[-1])

执行以上代码,输出结果为:

a
d

2.2 获取部分字符(获取字串)——切片操作

  1. 操作格式:“字符串[索引值1:索引值2]”:从索引值1开始获取,获取到索引值2前的所有字符。切片时索引值2可以越界,越界的时候就取临界值。
    示例代码:
str1 = 'abcd'
str2 = 'hello python'

print(str1[0:-2])
print(str1[-2:-1])
print(str2[0:4])

执行以上代码,输出结果为:

ab
c
hell

  1. 操作格式:字符串[索引值1:索引值2:步进]: 从索引值1开始获取,每次索引值增加步进值,每增加一个次取一个字符,知道取到索引值2前为止。
    注意:a.步进如果是正数,那么索引值1对应的字符位置一定要在索引值2对应位置的前面; 步进如果是负数,那么索引值1对应的字符位置一定要在索引值2对应位置的后面。
       b.索引值2对应的字符是取不到的。
    示例代码:
str3 = 'helloPython'

print(str3[0:5:2]) 
print(str3[-1:-5:-1])

执行以上代码,输出结果为:

hlo
noht

  1. 索引值的省略
    切片的时候,索引值1和索引值2是可以省略的
  • 索引值1省略:默认从开头开始获取(开头可能是字符串的第一个字符,也可能是字符串的最后一个字符)
  • 索引值2省略:从索引值1位置开始获取,获取到结束(结束可能是字符串的最后一个字符,也可能是字符串的第一个字符)
    示例代码:
str5 = "123456789"

print(str5[::])
print(str5[1::])
print(str5[:2:])
print(str5[::3])

执行以上代码,输出结果为:

123456789
23456789
12
147

3 字符串的运算

3.1 字符串的“+”

字符串+字符串:python支持两个字符串相加,其效果就是将两个字符串拼接在一起,产生一个新的字符串。
示例代码:

print('abc'+'123')

输出结果:

abc123

3.2 字符串的“*”

操作格式:字符串“*”整数(也就是字符串重复多次)。
示例代码:

print('123'*3)

输出结果:

123123123

3.3 支持所有比较运算符

  • a.让str1中的每一位字符,分别同str2中每一位字符依次比较。直到不同为止,再看不同字符中谁的编码值大或者小。
  • b.其比较结果都是布尔值。
    示例代码:
str1 = 'abcd'
str2 = 'ac'
str3 = 'fgh'

print(str1 > str2)
print(str1 > str3)
print(str2 > str3)

输出结果:

'False'
'False'
'False'

3.4 in和 not in

str1 in str2:判断str1是否在str2中(str2是否包含str1/str1是否是str2的子串),结果是布尔值。
示例代码:

print('abc' in 'a1b2cdef')
print('f' not in 'python')

输出结果:

'False'
'True'

3.5 获取字符串长度

字符串的长度,指的是字符串中字符的个数。通常用内置函数len()来获取字符串长度
示例代码:

str1 = 'project'
print(len(str3),len('abc 1\\2'))

输出结果:

7 7

3.6 阻止转义

在字符串的最前面添加r或者R可以阻止转义
示例代码:

print('a\nb')
print(r'a\nb')

输出结果:

a
b
a\nb

4 格式化字符串

表示格式为:带格式的字符串%(格式符对应的值)
说明:%是固定格式;()也是固定格式。带格式符的字符串中有几个格式符,那么后面的括号中就必须有几个和它一一对应的值。

  • 以下是常见的几种格式化字符串符号:
符号 描述
%s 格式化字符串
%d 格式化整数
%f 格式化浮点数(%.nf为保留小数点后n位小数)
%c 格式化字符(可以将数字转换成字符拼接到字符串中)

示例代码如下:

# Hello,xxxx!今年xx岁
first_name = 'zhang'
last_name = 'san'
age = 28
print('Hello,%s%s!今年%d岁' % (first_name,last_name,age))

# 金额是:xx.xx元
money = 999
print('金额是:%.2f元' % (money))

执行以下代码,输出结果为:

Hello,zhangsan!今年28岁
金额是:999.00元

5 字符串相关方法

python为字符串提供了很多的内建函数,使用方法为:“字符串.函数()”。
注意:这些所有的函数功能都不会影响原来的字符串,而是产生一个新的字符串。

方法 描述
capitalize 将字符串的第一个字符转换为大写
center(width,fillchar) 返回一个指定的宽度width居中的字符串,fillchar 为填充的字符,默认为空格。
count(str,start=0,end=len(string)) 返回 str 在 string 里面出现的次数,star为字符串开始搜索的位置,end为字符串中结束搜索的位置
expandtabs(tabsize=8) 把字符串中的 tab 符号('\t')转为空格,tabsize为指定转换字符串中的 tab 符号('\t')转为空格的字符数,默认空格数是8
find(str,start=0,end=len(string) 检测字符串中是否包含子字符串 str ,如果指定 start(开始)和 end(结束)范围,则检查是否包含在指定范围内,如果指定范围内如果包含指定索引值,返回的是索引值在字符串中的起始位置。如果不包含索引值,返回-1
indx(str,start=0,end=len(string) 跟find()方法一样,只不过如果str不在字符串中会报一个异常