day9-字符串

1.操作字符串

1)查(获取字符串中的字符)

  • 获取单个字符:字符串[下标]
  • 字符串切片:字符串[开始下标:结束下标:步长]
  • 遍历字符串:直接遍历字符串/通过遍历下标遍历字符串

a.获取单个字符

print('==========获取单个字符==========')
str1 = 'hello,python!'
print(str1[4], str1[-4])

str2 = 'abc\n123\u4e00你好'
print(str2[7])        # 一

# 补充:r语法    - 在字符串的最前面加r/R,会让字符串中所有的转义字符的功能消失 (一般在正则表达式中使用)
str3 = r'\tabc\n123\u4e00你好'
print(str3)
print(str3[7])        # 1

b.字符串切片

str1 = 'hello,python!'
print(str1[1:7:2])    # el,
print(str1[-1:7])     #
print(str1[-2:2:-1])  # nohtyp,ol
print(str1[:5:2])     # hlo
print(str1[2::-1])    # leh
print(str1[-5::2])    # to!

2)字符串相关操作

a.数学运算符:+,*

字符串1 + 字符串2 - 将字符串1和字符串2拼接在一起产生一个新的字符串

str1 = 'hello'
str2 = 'abc'
print(str1 + ',' + str2)

字符串 * N 或者 N * 字符串 - 字符串重复N次产生一个新的字符串

print(str1 * 3)

b.比较运算符:<,>,<=,>=,==,!=

1.字符串比较大小:从前往后比较两个字符串中相同位置上的字符的大小,谁的字符的编码值大对应的字符串就大
2.应用
判断字符是否是大写字母:'A' <= char <= 'Z'
判断字符是否是小写字母:'a' <= char <= 'z'
判断字符是否是字母:('A' <= char <= 'Z') or ('a' <= char <= 'z')
判断字符是否是中文字符:'\u4e00' <= char <= '\u9fa5'
判断字符是否是数字字符:'0' <= char <= '9'

print('acsasa' > 'cd')    # False
print('abcs' > 'abca')    # True
# 练习1:统计输入的字符串中数字字符的个数
# 练习2:将输入的字符串中所有的小写字母取出来
num = 0
str4 = input('请输入用户名:')
str5 = ''
for chars in str4:
    if '0' <= chars <= '9':
        num += 1
    if 'a' <= chars <= 'z':
        str5 += chars

print('数字字符的个数:', num)
print(str5)

c.in 和 not in

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

str1 = 'abc'
str2 = 'abcaqk1'
print(str1 in str2)       # True
print(str1 in 'a1sba1c')  # False

d.相关函数:len, max, min, sorted, str

str(数据) - 将指定数据转换成字符串;(所有类型的数据都可以转换成字符串,转换的时候是直接在数据本身外加引号)
字符串转整型:字符串去掉引号后本身就是一个整数,才能转换成整型
字符串转浮点型:字符串去掉引号后本身就是一个数字,才能转换成浮点型

print(float('3e4'))
print(int('39'))

2.格式字符串

1)什么是格式字符串

字符串中使用格式占位符来代替字符串中变化的部分,这种字符串就是格式字符串
1.语法
带有格式占位符的字符串 % (值1,值2,值3,...)
2.说明
% - 固定写法
() - 固定写法,当格式占位符只有一个的时候可以省略
值 - 值要和前面的格式占位符一一对应(个数和类型)
3.格式占位符(不是python特有的)
%s - 字符串
%d - 整型
%.Nf - 浮点型,N表示小数点后面的位数
%c - 字符(可以将字符编码转换成字符拼接到字符串中)

name = '小明'
age = 3
gender = '男'
weight = 55
pay = 100000
message = '%s今年%d岁,性别%s,体重:%.2fkg,薪资:%.2f元' % (name, age, gender, weight, pay)
print(message)

2)格式字符串

带有{}的格式字符串.format(值1,值2,值3,...)

message = '{},今年{}岁'.format('小明', 10)
print(message)

message = '{0},{1},{1}{0}'.format('小明', 10)
print(message)     # 小明,10,10小明

message = '{name},{age}'.format(name='小白', age=18)
print(message)

message = '{1[1]},{0},{0[0]}'.format([0, 1], 'abc')
print(message)

数字格式

# 注意:格式字符串中约束小数位数的时候采用的是四舍五入
# {:.Nf}   - 让数字保留N位小数
message = '圆周率:{0:.2f},周长:{0:.1f}*{1}**2'.format(3.1415926, 10)     # 四舍五入
print(message)

3.字符串相关方法

1)小写字母和大小字母之间的相互转换

char = 'a'
# 小写字母转大写:编码值减去32
new_char = chr(ord(char) - 32)
print(new_char)

2)字符串对齐

  • 字符串.center(长度,字符) - 产生一个指定长度的字符串,原字符串居中,剩下的部分用指定的字符填充

  • 字符串.ljust(长度,字符) - 产生一个指定长度的字符串,原字符串居左,剩下的部分用指定的字符填充

  • 字符串.rjust(长度,字符) - 产生一个指定长度的字符串,原字符串居右,剩下的部分用指定的字符填充

  • 字符串.zfill(长度) - 产生一个指定长度的字符串,原字符串居右,剩下的部分用字符0填充

str1 = 'abc'
new_str1 = str1.center(9, ' ')
print(new_str1)

new_str2 = str1.ljust(5, ' ')
print(new_str2)

new_str3 = str1.rjust(8, ' ')
print(new_str3)

练习:产生学号

num = 4
new_str4 = 'py1905' + str(num).zfill(5)
print(new_str4)

3)查找

  • 字符串1.find(字符串2) - 获取字符串2第一次在字符串1出现的位置,如果有返回下标(返回正的下标),没有返回-1

  • 字符串1.index(字符串2) - 获取字符串2第一次在字符串1出现的位置,如果有返回下标(返回正的下标),没有就报错

  • 字符串1.find(字符串2,开始下标,结束下标) - 在开始下标到结束下标前对应的返回内查找字符串2

  • 字符串1.index(字符串2,开始下标,结束下标) -

str1 = 'how are you'
print(str1.find('are'))
print(str1.find('1'))        # -1
# print(str1.index('1'))       # ValueError: substring not found

4)join(***)

字符串1.join(序列) - 将序列中的元素用字符串1连接在一起产生一个新的字符串(序列中的元素必须都是字符串)

names = ['小黑', '小华', '小花']
new_str5 = ''.join(names)
print(new_str5)

5)替换

字符串1.replace(old, new) - 将字符串1中所有的old都替换成new,然后产生一个新的字符串

str2 = 'how are you? I am fine, thank you!'
new_str2 = str2.replace('are', 'is')
print(str2)
print(new_str2)

创建映射表(map)
str.maketrans(字符串1,字符串2) - 创建字符串1和字符串2字符一一对应的映射表,字符串1是需要被替换的字符,字符串2是目的字符(新字符)
字符串1.translate(映射表) - 按照映射表将字符串中的字符进行替换,产生一个新的字符串

str2 = 'how are you? I am fine, thank you!'
map1 = str2.maketrans('are', '123')
print(map1)

str2 = 'how are you? I am fine, thank you!'
new_str2 = str2.translate(map1)
print(new_str2)

6)字符串切割

字符串.split(字符串2) - 将字符串1中的字符串2作为切点,切割字符串1

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

推荐阅读更多精彩内容