day6总结-字符串及其操作

字符串

1.什么是字符串(str)

字符串是Python内置的一种容器型数据类型(序列),不可变,有序;

将单引号或双引号作为容器,里面可以根据情况放多个字符

不可变:指的是内容的值和顺序不可变

有序:一旦字符串确定,字符串中的字符的位置就固定了

2.字符串中的内容 - 字符

Python中只有字符的概念,没有字符对应的数据类型

字符串的基本单元就是字符,又叫字符串的元素

a.基本字符

数字,字母,常用符号,中文,日语,韩语等

'asdffdgg'

"123324dfg"

'终于'

b.转义字符

通过转义符号\后面跟不同的符号来表示特殊功能或特殊意义的字符,以下转义字符的长度都为1

\n --换行

str = 'abc\n123'
print(str)     
"""
结果为:
abc
123
"""

' --一个单引号字符

" --一个双引号字符

\\ --一个反斜杠

str = "asd\'123\"美好\\123"
print(str)
#结果为:asd'123"美好\123

\t --制表符(跳到下一个tab位置)

阻止转义:

在字符串最前面加r或R,可以阻止字符串中的转义字符转义(一般用于正则表达式)

str = '\tabc\n123x\'y\"z'
str2 = R'\tabc\n123x\'y\"z'
print(str)
"""
    abc
123x'y"z
"""
print(str2)
#\tabc\n123x\'y\"z

c.编码字符

\u后面跟4位十六进制的数,来表示一个字符,这个4位(不足位数前面补0)的16进制数对应的值是字符的编码值

str = 'abc+\u4e00'
print(str)
#abc+一

d.字符编码

Python中的字符采用的是Unicode编码

计算机存储数据的时候只能存数字,而且存储的是数字的补码(是以二进制的格式进行存储)

print(bin(100))      #bin(数字),获取指定数字对应的二进制
print('二进制',0b1100100)
print(oct(100),0o144)   #oct(数字),获取指定数字对应的八进制
print(hex(100),0x64)    #hex(数字),获取指定数字对应的十六进制
print(0b1100100 * 10)
#print打印的数字结果默认是十进制

编码:每个字符在计算机存储的时候都会对应一个固定且唯一的数字,这个数字就是这个字符的编码

每一个字符和数字的一一对应关系就是编码表,常见的编码表有:ASCII码表的Unicode编码表

ASCII码表

只对数字字符,字符字符,英文符号进行编码

各字符编码值大小比较:

''(0) < ' '(32) < 0(48)~9(57) < A(65)~Z(90) < a(97)~z(122)

Unicode编码表

是对ASCII码表的扩充,能够对世界上所有的符号进行编码,4e00-9fa5(汉子范围)

chr(编码值):获取编码值对应的字符

ord(字符):获取字符对应的编码值,字符就是长度为一的字符串

chr(0x1111)
chr(100)
print(ord('a'))
print(ord('张'))

字符可以比较大小实际就是编码值的比较

字符串也可以,每个对应位字符一次比较


获取字符串

1.获取单个字符

a.语法

字符串[下标]

b.说明

字符串:可以是字符串值,也可以是字符串变量,结果是字符串的表达式等都可以

[ ]:固定写法

下标:又叫索引,一旦字符串确定,那么字符串的每个字符都会对应一个下标,表示这个字符在这个字符串中的位置。下标的范围是0字符串长度减1,0表示第一个字符,1表示第二个,依次类推。下标范围还可以是-1 -字符串长度,-1表示倒数第一个。注意:\color{red}{下标不能越界,即超过下标范围,否者报错}

str1 = 'python'   #p:0/-6
print('python'[3])
print(str1[2])

2.获取部分字符

a.语法

字符串[开始下标:结束下标:步长]

从开始下标开始,获取到结束下标\color{red}{前}为止,每次下标值增加步长

b.说明

字符串:可以是字符串值,也可以是字符串变量,结果是字符串的表达式等都可以

[: :]:固定写法

开始下标,结束下标:下标值,开始下标对应的字符可以取到,结束下标对应的字符一定取不到。

步长:整数,可以是正可以是负

c.注意

  • 这里下标可以越界
  • 如果步长为正(从前往后获取),开始下标对应的字符要在结束下标对应字符前才能获取到值,否者结果为空
  • 如果步长为负(从后往前获取),开始下标对应的字符要在结束下标对应的字符后面才能获取到值,否者结果为空
str1 = 'abcdef123456789'
print(str1[0:4:1])
print(str1[0:4:-1])
print(str1[-2:-10:-2])
print(str1[0:100:1])
print('hello python'[1:-2:3])    #eoy

切片的语法中可以对步长,开始下标,结束下标进行省略:

1.省略步长(默认为1)

字符串[开始下标:结束下标] == 字符串[开始下标:结束下标:1]

2.省略下标

省略开始下标:

字符串[:结束下标:步长]

如果步长为正,从字符串开头往后取;如果步长为负,从字符串最后一个字符往前取

省略结束下标:

字符串[开始下标::步长]

如果步长为正,取到最后一个字符为止;如果步长为负,取到第一个字符为止

str1 = 'abcedf123456'
print(str1[2:5])
print(str1[-4:-1])
print(str1[:3:1])
print(str1[:3:-1])
print(str1[2:])
print(str1[2::-1])
print(str1[:2])
print(str1[:])
print(str1[::-1])
num = 1234
num = int(str(num)[::-1])

遍历字符串

一个一个的取出所有的字符

方法一:直接遍历

for 变量 in 字符串:
    循环体

for i in 'hello':
    print(i)

方法二:通过遍历下标来遍历字符

for 变量 in range(字符串长度):
    字符串[变量]

str1 = 'when i was young'
for i in range(len(str1)):
    print(i,str1[i])
    
index = 0
while index < len(str1):
    print(index,str1[index])
    index += 1


字符串相关运算

a.数学运算

字符串支持加法和乘法运算

加法语法:字符串1 + 字符串2 --将两个字符串拼接在一起产生一个新的字符串。加号两边,必须都是数字或都是字符串,数字和字符串不能混合相加。

str = 'abc' + '123'
print(str)          #abc123
str += '你好'
print(str)       #abc123你好
print(str+'===')

乘法语法:字符串*正整数/正整数*字符串 --指定的字符串重复指定次数,产生一个新的字符串

print('abc' * 3)    #abcabcabc
print('*' * 3)      #***

b.比较运算

字符串支持所有比较运算符

字符串1 == 字符串2 ,字符串1 != 字符串2 --判断两个字符串是否相等

字符串比较大小:

让两个字符串中相同位子的字符一一比较(从前往后),找到第一对不相同的字符,判断编码值的大小

#判断字符是否是字母
'a' <= char <= 'z'  or 'A' <= char <= 'Z'
#判断字符是否是数字
'0' <= char <= '9'
#判断一个字符是否是中文(4e00~9fa5)
'\u4e00' <= char <= '\u9fa5'
'一' <= char <= '龥'
0x4e00 <= ord(char) <= 0x9fa5

c.in 和not in操作

字符串1 in 字符串2 --判断字符串1是否在字符串2中(判断字符串2中是否包含字符串1)

字符串1 not in 字符串2 --判断字符串1是否不在字符串2中(判断字符串2中是否不包含字符串1)

print('abc' in '123abc455')    #True
print('abc' in '12a45bc678')    #False
print('abc' not in '12a45bca23')  #True

d.常用内置函数

len(字符串) --求字符串长度

str(字符串) --将其他数据转换为字符串类型,所有数据都能转换成字符串,转换的时候直接在数据的外面加引号

​ --字符串转整型:只有去掉引号后,本身就是整数的字符串才能转换成整型

​ --字符串转浮点型:去掉引号后,本身就是一个数的字符串才能转换成浮点型

​ --字符串转换成布尔型:除了空串会转换为False,其他都是True

print(bool(''))    #False
str2 = ""
if str2:
    print('不是空串')
    
print(str(True))    #'True'
print(bool(''))     #False
print(bool(0))      #False

e.字符串的对象方法

字符串.方法()

字符串.capitalize() --将字符串首字母大写

str4 = 'hello'
new_str = str4.capitalize()
print(new_str)

字符串.center(width,fillchar) --产生一个长度为width的新的字符串,新的字符串中原字符居中,剩余的部分用fillchar填充

new_str = str4.center(11,'0')
print(new_str)

字符串.ljust(width,fillchar) ----产生一个长度为width的新的字符串,新的字符串中原字符左对齐,剩余的部分用fillchar填充

字符串.rjust(width,fillchar) ----产生一个长度为width的新的字符串,新的字符串中原字符右对齐,剩余的部分用fillchar填充

字符串.zfill(width) ---- 同 字符串.rjust(width,0)

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,393评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,790评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,391评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,703评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,613评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,003评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,507评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,158评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,300评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,256评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,274评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,984评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,569评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,662评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,899评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,268评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,840评论 2 339

推荐阅读更多精彩内容

  • 1.什么是字符串 序列,有序,不可变的。用单引号或者双引号括起来的任意字符集。 2.字符串中的字符 a.普通字符:...
    发家致富靠养猪阅读 624评论 1 7
  • 1 字符编码 python中的编码采用的是Unicode编码。什么是编码?就是数字和字符的一一对应的,其中字符对应...
    barriers阅读 410评论 0 1
  • 一 字符编码 1.什么是字符串 特点:序列,有序,不可变的。形式:用单引号或者双引号括起来的任意字符集。...
    Fly_withbird阅读 410评论 0 0
  • 字符串 1.什么是字符串 序列:有序,不可变的。用单引号或者双引号括起来的任意字符(集)。 2.字符串中的字符 a...
    落幕丶丶阅读 782评论 0 0
  • 苹果其实不仅仅只有系统自带的字体,还可以有选择性的动态下载所需的字体。像娃娃体、行楷、丽黑……等常见字体都支持。 ...
    飞翔的费翔阅读 657评论 0 2