day6-string总结

1.什么是字符串(str)

  • 字符串是python内置的一种容器型数据类型:不可变、有序
  • 将''(单引号)""(双引号)作为容器,里面可以根据情况放多个字符
  • 不可变:指的是内容的值和顺序不可变
  • 有序:一旦字符确定,字符串中字符的位置就固定(每个字符是第几个字符是确定的)
    'abc123456'
    "123*%数字"

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

  • python中,只有字符的概念,没有字符对应的数据类型
    字符串的基本单元就是字符,又叫字符串的元素

a基本字符 -- 数字、字母、常用符号、中文等

'123'
'abc'
'+-='
'青蛙'
'123abc+青蛙'

b.转义字符 -- 通过转义符号\ 后面跟不同的符号,来表示特殊功能或者特殊意义的字符

  \n       -- 跨行
  \'或\''   -- 表示'或"
str1 = 'abc\n123'
print(str1)
str2 = 'abc\\2'
print(str2)
  • 阻止转义:在字符串的最前面加r或者R,可以阻止字符串中的转义(一般用于正则表达式)
str3 = r'\add\fdf\nddd\\'
print(str3)

c.编码字符 -- \u后面跟4位的十六进制数,来表示一个字符。

这个4位的十六进制数对应的值就是字符的编码值
十六进制数 0-9,a-f 表示0-15
print(0xa + 10)

3.字符编码

python中的字符采用的是Unicode编码
计算机存储数据只能存储数字,而且存的是数字的补码(是以二进制的形式进行储存)
100 #十进制数
print('100的二进制数',bin(100)) #bin(数字)--查看数字的二进制形式
print(oct(100)) #八进制
print(hex(100)) #十六进制

  • 编码:每个字符在计算机中存储的时候,都会对应一个固定且唯一的数字,这个数字就是这个字符的编码
    每个字符和数字的一一对应关系,就是编码表
    常见编码表ASCII编码表和Unicode编码表。
  • ASCII码表中只存储数字字符、英文字母、字母字符、英文符号
  • Unicode码表是对ASCII码表的扩充,能够对所有符号进行编码 4e00-0fa5 汉字范围
    chr(编码值) -- 获取编码值对应的字符
num = 1
for code in range(0x4e00,0x9fa5):
    print(chr(code),end='')
    num += 1
    if num%20 == 0:
        print()
 ord(字符) -- 获取字符对应的编码(一个字符)
print(ord('何'),ord('鑫'))   #十进制数
 根据编码值比较大小
print('a' > 'Z')
print('何' > '鑫')

1.获取字符 -- 取字符串的内容

a.获取单个字符

  • 语法:字符串[下标] -- 根据下标获取字符串中对应的字符
  • b说明:字符串 - 可以是字符串值,也可以是字符串变量;只要结果是字符串的表达式都可以
    [] - 固定写法
    下标 - 又叫索引,一旦字符串确定,那么字符串的每一个字符都会对应一个下标表示这个字符在字符串中的位置。下标的范围是0开始到字符串的长度减一
    0表示第一个字符,1表示第二个字符,以此类推。
    下标范围还可以是-1到-字符串长度,-1表示倒数第一个
str1 = 'python'  #p对应的下:0/-6
result = 'python'[3]
print(result)
print(str1[0],str1[-1])
#注意:获取单个字符的时候下标不能越界

1.2 获取部分字符(字符串切片)

  • a.语法: 字符串[开始下标:结束下标:步长]-从开始下标获取到结束下标前为止,每次下标的值增加步长
  • b.说明:字符串 - 可以是字符串值,也可以是字符串变量;只要结果是字符串的表达式都可以
    [],: - 固定写法
    开始下标、结束下标 - 开始下标对应的值可取,结束下标不可取
    步长 - 整数,可以是正的或者负的
  • c.注意:下标可以越界
    如果步长为正(从前往后获取):开始下标对应的字符要在结束下标的前面,才能获取到结果
    如果步长为负(从后往前获取):开始下标对应的字符要在结束下标的后面,才能获取到结果
a = 'python'
print(a[-6:8:1])
print(a[5:0:-1])
print(a[1:3:-1])   # ''

切片语法中可以对步长、开始下标、结束下标进行省略
1省略步长:
字符串[开始下标:结束下标] == 字符串[开始:结束:1] 步长默认为1

print(a[1:4])
print(a[-4:-1])

2省略开始下标:
字符串[:结束下标:步长]
如果步长为正,从0开始;如果步长为负,从-1开始
3省略结束下标
字符串[开始下标::步长]
如果步长为正,取到最后一个字符;如果步长为负,取到第一个字符

str2 = 'abcdef123456'
print(str2[2:5])   #'cde'
print(str2[-4:-1])  #'345'
print(str2[:4:1])   #abcd
print(str2[:3:-1])  #654321fe
print(str2[2:])     #cdef123456
print(str2[2::-1])  #cba
print(str2[::-1])   #654321fedcba
#练习1234 -- 4321
num = 1234
num1 = int(str(num)[::-1])
print(num1)

1.3遍历字符串 -- 一个一个的取出所有字符

方法一:直接遍历
for 变量 in 字符串:
    循环体
    
方法二:通过遍历下标来遍历字符串
for 变量 in range(字符串长度):
    字符串[变量]   
for char in 'hello':
    print(char)


str3 = 'when I was young'
#len(字符串)  - 获取字符串长度,返回一个数字
for index in range(len(str3)):
    print(index, str3[index])

index = 0
while index < len(str3):
    print(index, str3[index])
    index += 1

1 字符串运算

a数学运算:字符串支持加法运算和乘法运算
语法: 字符串1 + 字符串2 - 将字符串1和字符串2拼接在一起,产生一个新的字符串
new_str = 'abc' + '123'
print(new_str)
new_str += 'nihao'
print(new_str)
#注意:加号两边,必须是数字,或者都是字符串。字符串和数字不可以混合相加
语法:字符串*正整数 正整数/字符串 -指定字符串重复指定次数,产生一个新的字符串
print('abc' * 5)
print('*'*10)
b.比较运算:字符串支持所有比较运算符
  • 字符串1==字符串2 字符串3!=字符串4 判断两个字符串是否相等
print('abc'=='abc')    #True
print('abc' != 'acb')  #True

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

print('abcde'>'abcz')   #False
char = '是'
#判断一个字符是否是字母
#'a' <= char <= 'z' or 'A' <= char <= 'Z'
#判断一个字符是否是数字
# '0' <= char <= '9'
#判断一个字符是否是中文(4e00~9fa5)
print('\u4e00' <= char <= '\u9fa5')
print('0x4e00' <= str(ord(char)) <= '0x9fa5')
练习:输入任意一个字符串,统计输入的内容中字母的个数
str1 = input('请输入一个字符串')
sum1 = 0
for char in str1:
    if 'a' <= char <= 'z' or'A' <= char <= 'Z':
        sum1  += 1
print('字母的个数',sum1)

3. in和not in 操作

  • 字符串1 in 字符串2 - 判断字符串2是否包含字符串1
  • 字符串1 not in 字符串2 - 判断字符串1是否不在字符串2中
print('abc' in 'abc123')   #True
print('abc' in 'ab123c')   #False
print('abc' not in 'ab123c')  #True

4.常用内置函数

  • len(字符串) - 求字符串长度
  • str(数据) - 将其他数据转化为字符串,任何数据都可以转换成字符串,转换的时候直接在数据外层加引号
  • print(int('+23')) 只有去掉引号后,本身就是一个整数的字符串才能转化成整型
  • print(float('124.a')) 只有去掉引号后,本身就是数字的字符串才能转化成
  • print(bool('')) 只有空串会转换成False,其余都是True

5.字符串的对象方法

  • 字符串.方法()
  • 字符串.capitalize() 将字符串首字母大写
  • 字符串.center(width,fillchar) 产生一个长度为width的字符串,将原字符串居中显示,剩余内容用fillchar中内容填充
  • 字符串.ljust(width,fillchar) 左对齐
  • 字符串.rjust(width,fillchar) 右对齐
  • 字符串.zfill(width) 右对齐,用0填充
str4 = 'hello'
new_str = str4.capitalize()
print(new_str)

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

num = 1
study_id = str(num).rjust(3,'0')
print(study_id)

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