Day3—字符串

2018-08-23  本文已影响0人  C0mpass

题外:计算机的数据存储

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

  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 什么是字符串

1.2 转义字符

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

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

1.3 Unicode编码

# 转换
# 1)将Unicode码转换成字符:chr(编码)
print(chr(0x4e03))

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

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


0x66fe

2 获取字符串

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

2.1 获取单个字符

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

说明:

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是可以省略的
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 支持所有比较运算符

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不在字符串中会报一个异常
上一篇下一篇

猜你喜欢

热点阅读