Day3-课堂笔记-字符串

1.字符串

a.使用单引号或双引号括起来的字符集就是字符串
b.引号中单独的符号、数字、字母等叫字符
c.转义字符:可以用来表示一些有特殊功能或者是特殊意义的字符(通过在固定的字符前加),转义字符在计算字符串长度时,转义字符代表一个字符。

-->'
\ -->
\n -->换行
\t -->制表符
" -->"
例:

'123' # 数字字符串
'ahcn'
'^&*&sf'
'坑逼'
' '
str2='\''
print(str2)
str3='\\'
print(str3)
str1='床前明月光,\n疑是地上霜。'
print(str1)

结果

'
\
床前明月光,
疑是地上霜。

2.阻止转义

可以通过在字符串前面加r或R,来阻止转义字符转义
例:

str4=r'\\'
print(str4)

结果:

\\

3.Python中字符串的字符是Unicode编码

Unicode编码:使用16位对一个字符进行编码编,编码的目的是让字符可以存储到计算机中。Unicode码中包含了ASSCII码,可以表示世界上所有的语言和符号
a.获取一个字符的Unicode码,ord('字符')
例:

print(hex(ord('与')))

结果:

0x4e0e

b.将Unicode码转换成字符,chr(编码值)
例:

print(chr(0x4e00))

结果:

c.字符串比较大小
从字符串的第一个字符开始依次往后比较每个字符的大小,直到遇到字符不一样为止。比较字符大小的时候, 实质比的是他们编码的大小
例:

print('abc'>'b')
print('abc'>'aa')

结果:

False
True

4.获取字符串长度

长度 :字符串的字符个数
len():是获取序列长度的内置函数
例:

count=len('abc\n123')
print(count)

结果:

7

5.获取字符

索引:字符串中每一个字符都对应一个下标(索引),我们可以通过索引值
例:

 'abc' ---> a:0 ,b:1 ,c:2

格式:字符串[索引值]
例:

str1='abc'
print(str1[0]) # a
print(str1[1]) #b
str2="dy\nup"
print(str2[4])

结果:

a
b
p

注意:下标的范围:0~字符串的长度-1。获取字符串中的字符时,索引值不能超过索引的范围,否则会报IndexError
索引值为负数时:
例:

print(str1[-1]) # 获取字符串str1中的最后一个字符
print(str1[-2]) # 获取字符串str1中的倒数第二个字符

结果:

c
b

6.获取部分字符

格式1:字符串[开始下标:结束下标]==字符串[开始下标:结束下标:1] --->获取字符串中包括开始下标但不包括结束下标之间的所有字符字
格式2:符串[开始下标:结束下标:步进]
a.开始下标对应的字符,要在结束下标对应的字符前面(步进是整数)
例:

str3='hello ren za'
print(str3[6:9])
str4='hello Python'
print(str4[6:12])  # Python
print(str4[-6:12])  # Python

结果:

ren
Python
Python
b.开始下标省略:从字符串的最前面取到结束下标前一个字符
例:

print(str4[:4])

结果:

hell
c.结束下标省略:从开始位置取到字符串结束

print(str4[4:])

结果:

o Python
e.两个都省略:获取整个字符串的内容
例:

print(str4[:])

结果:

hello Python
f.有步进
例:

print(str4[::2]) # hloPto

结果:

hloPto
g.当步进是负数时,开始下标的字符可以取而结束下标的字符取不到。当结束下标和开始下标省略时,全取
例:

print(str4[4::-1]) #
print(str4[:4:-1]) 
print(str4[4:0:-1]) 
print(str4[::-1])
print(str4[4::-2]) 
print(str4[::-2]) 

结果:

olleh
nohtyP
olle
nohtyP olleh
olh
nhy le

7.字符串拼接

1)运算符+

注意:加号两边要么都是数字要么都是字符串,不能一边是数字一边是字符串
例:

str1='hello'+' '+'Python'
print(str1)

结果:

hello Python

2)运算符*

让字符串重复
格式:字符串*整数
例:

str2='hello '*3
print(str2)
str2='a'*10
print(str2)

结果:

hello hello hello
aaaaaaaaaa

3)in

判断in前边字符串是否在in后边字符串中-->True 或False
格式:字符串1 in 字符串2
例:

result='aa'in 'aaffdd'
print(result)

结果:

True

4)not in

判断not in前边字符串是否不在not in后边字符串中-->True False
格式:字符串1 not in 字符串2
例:

result='123' not in 'abc'
print(result)

结果:

True

5) 格式字符串

格式:'%s'(表示站位符) %(值)(可以有多个站位符)
例:

str3='abd%swrweff%s' %('123','dd232')
print(str3)

结果:

abd123wrweffdd232

#%s -->字符串占位符(格式符)
#%d -->整数占位符(格式符)
#%f -->浮点数占位符
#%c -->长度是1的字符串占位符(字符站位符)
# 可以给一个字符,也可以给字符的编码值
str4='-%s-%d-%f-%c-'%('我是字符串',1234,12.5,'k')
print(str4)
# %.nf:使用n值限制小数点后面的位数(默认六位小数)
str5='金额:%.2f元'%(100)
print(str5)
# 如果占位符后面没加%(),那么这个字符串只是普通的字符串
str6='金额:%.2f元'
print(str6)
# %x和%X--->十六进制数据占位符
number=15
str7='%d的十六进制是0x%x'%(number,number)
print(str7)

结果:

-我是字符串-1234-12.500000-k-
金额:100.00元
金额:%.2f元
15的十六进制是0xf

str9='-%c-%s-%d-%f-%u-%o-%x-%X-%e-%E-%g-%G'%('k','jgakshd',-120,12.0,34,99,15,15,15.8,15.8,15.8,15.8)
print(str9)

结果:

-k-jgakshd--120-12.000000-34-143-f-F-1.580000e+01-1.580000E+01-15.8-15.8

6)格式化输出

name='路飞'
age=23
print('%s今年%d岁'%(name,age))
str8='他是%g岁'%(7.99)

结果:

路飞今年23岁

8.字符串方法

1)capitalize()函数

将字符的第一个字符转换为大写

str='hello ren si yu'
print(str)
new_str=str.capitalize()
print(new_str)

结果:

hello ren si yu
Hello ren si yu

2)center(width,fillchar)

返回一个长度为width且指定字符串居中的字符串,空余位置用fillchar填充,fillchar为填充的字符,默认为空格

str='hello'
print(str)
new_str=str.center(10,'*')
print(new_str)

结果:

hello
hello*

3)count(str,beg=0,end=len(string))

返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数

str='www.runoob.com'
print(str.count('o'))
print(str.count('www',0,len(str)))
print(str.count('www',0,10))

结果:

3
1
1

4)bytes.decode

decode() 方法以指定的编码格式解码 bytes 对象。默认编码为 'utf-8'。

str='任思宇'
str_utf8=str.encode("UTF-8")
str_gbk=str.encode("GBK")
print(str)
print("UTF-8编码:",str_utf8)
print("GBK编码:",str_gbk)
print("UTF-8解码:",str_utf8.decode('UTF-8','strict'))
print("GBK解码:",str_gbk.decode('GBK','strict'))

结果:

任思宇
UTF-8编码: b'\xe4\xbb\xbb\xe6\x80\x9d\xe5\xae\x87'
GBK编码: b'\xc8\xce\xcb\xbc\xd3\xee'
UTF-8解码: 任思宇
GBK解码: 任思宇

5endwith(suffix,beg=0,end=len(string))

检查字符串是否以 obj 结束,如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束,如果是,返回 True,否则返回 False.

str='hello ren si yu'
new_str=str.endswith('yu')
print(new_str)
new_str=str.endswith('s',0,11)
print(new_str)
new_str=str.endswith('u',0,len(str))
print(new_str)

结果:

True
True
True

6)expandtabs(tabsize=8)

str='tab is\tsb'
print(str)
print(str.expandtabs())
print(str.expandtabs(8)) #默认为8
print(str.expandtabs(16))

结果:

tab is sb
tab is sb
tab is sb
tab is sb

7)find(str,beg,end=len(string))

检测 str 是否包含在字符串中,如果指定范围 beg 和 end ,则检查是否包含在指定范围内,如果包含返回开始的索引值,否则返回-1

str='hello sb go go'
new_str=str.find('go')
print(new_str)
new_str=str.find('go',0,len(str))
print(new_str)
new_str=str.find('goo',0,len(str))
print(new_str)
new_str=str.find('go',11,14)
print(new_str)

结果:

9
9
-1
12

8)index(str,beg,end=len(string))

检测 str 是否包含在字符串中,如果指定范围 beg 和 end ,则检查是否包含在指定范围内,如果包含返回开始的索引值,否则会出现异常

str='hello sb go go'
new_str=str.index('go')
print(new_str)
new_str=str.index('go',0,len(str))
print(new_str)
new_str=str.index('go',11,14)
print(new_str)
# new_str=str.index('goo',0,len(str))
# print(new_str)

结果:

9
9
12

9)isalnum()

如果字符串至少有一个字符并且所有字符都是字母或数字则返 回 True,否则返回 False

str='hello'
str1=' '
str2='123'
print(str.isalnum(),str1.isalnum(),str2.isalnum())

结果:

True False True

10)isalpha

如果字符串至少有一个字符并且所有字符都是字母则返回 True, 否则返回

False
str='hello'
str1=' '
str2='123'
print(str.isalpha(),str1.isalpha(),str2.isalpha())

结果:

True False False

11)isdigit()

如果字符串只包含数字则返回 True 否则返回 False

str='hello'
str1=' '
str2='123'
print(str.isdigit(),str1.isdigit(),str2.isdigit())

结果:

False False True

12)islower()

如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False

str='Adjfi'
str1=' '
str2='124'
str3='dfsd'
print(str.islower(),str1.islower(),str2.islower(),str3.islower())

结果:

False False False True

13)isnumeric()

如果字符串中只包含数字字符,则返回 True,否则返回 False

str='3435djfi'
str1=' '
str2='124'
str3='dfsd'
print(str.isnumeric(),str1.isnumeric(),str2.isnumeric(),str3.isnumeric())

结果:

False False True False

14)isspace

如果字符串中只包含空白,则返回 True,否则返回 False.

str='3435djfi'
str1=' '
str2='124'
str3='dfsd'
print(str.isspace(),str1.isspace(),str2.isspace(),str3.isspace())

结果:

False True False False

15)istitle()

如果字符串是标题化的(见 title())则返回 True,否则返回 False

str='Axin'
str1='dfd'
str2=' '
str3='342352'
print(str.istitle(),str1.istitle(),str2.istitle(),str3.istitle())

结果:

True False False False

16)isupper()

如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False

str='ASFFS'
str1='dfd'
str2=' '
str3='342352'
print(str.isupper(),str1.isupper(),str2.isupper(),str3.isupper())

结果:

True False False False

17)join(seq)

以指定字符串作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串

str='*'
str1=''
seq = ("r", "u", "n", "o", "o", "b")
print(str.join(seq))
print(str1.join(seq))

结果:

runoo*b
runoob

18)len(string)

返回字符串长度

str='hello'
print(len(str))

结果:

5

19)ljust(width,fillchar)

返回一个原字符串左对齐,并使用 fillchar 填充至长度 width 的新字符串,fillchar 默认为空格

str='yello'
print(str.ljust(10,'%'))

结果:

yello%%%%%

20)lower()

转换字符串中所有大写字符为小写.

str="HELLO"
print(str.lower())

结果:

hello

21)upper()

转换字符串中所有大写字符为大写.

str="hello ello"
print(str.upper())

结果:

HELLO ELLO

22)lstrip()

截掉字符串左边的空格或指定字符。

str='\nhello\n'
print(str)
print(str.lstrip())

结果:


hello

hello

23)rstrip()

截掉字符串右边的空格或指定字符。

str='\nhello\n'
print(str)
print(str.rstrip())

结果:


hello


hello

24)strip()

截掉字符串两边的空格或指定字符。

str='\nhello\n'
print(str)
print(str.strip())

结果:


hello

hello

25)maketrans()

创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。

str='hello yello sb www.com'
new_str=str.maketrans('se','12')
print(str.translate(new_str))

结果:

h2llo y2llo 1b www.com

26)max(str)

返回字符串 str 中最大的字母。

str='hello'
str1='235'
print(max(str),max(str1))

结果:

o 5

27)min(str)

返回字符串 str 中最小的字母

str='hello'
str1='235'
print(min(str),min(str1))

结果:

e 2

28)rfind(str,beg=0,end=len(string))

类似于 find()函数,不过是从右边开始查找.

str="hello ren si yu"
print(str.rfind('si',0,len(str)))

结果:

10

29rjust(width,fillchar)

返回一个原字符串右对齐,并使用fillchar(默认空格)填充至长度 width 的新字符串

str='yello'
print(str.rjust(20,'%'))

结果:

%%%%%%%%%%%%%%%yello

30)rindex(str,beg=0,end=len(string))

类似于 index(),不过是从右边开始.

str='hello ren si yu'
print(str.rindex('re',0,len(str)),str.rindex('en',0,len(str)))
# print(str.rindex('enn',0,len(str)))

结果:

6 7

31)replace(old,new,max)

把 将字符串中的 str1 替换成 str2,如果 max 指定,则替换不超过 max 次。

str='ok www is ok or yes ok'
print(str.replace('ok','12',2))

结果:

12 www is 12 or yes ok

32)split(str="",num=string,count(str))

num=string.count(str)) 以 str 为分隔符截取字符串,如果num 有指定值,则仅截取 num 个子字符串str -- 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。num -- 分割次数。

str='hello ren si yu you are sb'
print(str.split())
print(str.split('u',str.count('u')))
print(str.split('u',2))

结果:

['hello', 'ren', 'si', 'yu', 'you', 'are', 'sb']
['hello ren si y', ' yo', ' are sb']
['hello ren si y', ' yo', ' are sb']

33)splitlines([keepends])

按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。

str='ab c\n\nde fg\rkl\r\n'
print(str)
print(str.splitlines())
print(str.splitlines(True))
print(str.splitlines(False))

结果:

ab c

de fg
kl


['ab c', '', 'de fg', 'kl']
['ab c\n', '\n', 'de fg\r', 'kl\r\n']
['ab c', '', 'de fg', 'kl']

34)startswith(str,beg=0,end=len(string))

检查字符串是否是以 obj 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查。

str='hello ren si yu you are sb'
print(str.startswith('hello',0,len(str)))
print(str.startswith('re',6,len(str)))
print(str.startswith('re',5,10))

结果:

True
True
False

35)swapcase()

将字符串中大写转换为小写,小写转换为大写

str='HEllo'
print(str)
print(str.swapcase())

结果:

HEllo
heLLO

36)title()

返回"标题化"的字符串,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle())

str='hello ren si yu you are sb'
print(str.title())

结果:

Hello Ren Si Yu You Are Sb

9.if语句

条件语句结果为True执行的代码块
执行过程:先判断条件语句是否为True,如果为True就执行if语句:后面对应的一个缩进的所有代码。为False,就不执行冒号后面的一个缩进的代码块,直接执行后继的其他语句
条件语句:可以是任何有值的表达式,但一般是布尔值

1)格式1:

if True:
    print('代码1')
    print('代码2')
    print('代码3')
print('代码4')

练习:用一个变量保存时间(50米短跑),如果时间小于8秒则打印及格

time=7
if time>=8:
    print('不及格')
else:
    print('及格')
print(time)

结果

及格
7

2)格式2:

if 条件语句:
语句块1
else:
语句块2

执行过程:先判断条件语句是否为True,如果为True就执行语句块1,否则执行语句块2

用一个变量保存成绩,如果成绩打于60,则打印及格,否则打印不及格

grade=79
if grade>=60:
    print('及格')
else:
    print('不及格')

结果:

及格

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

推荐阅读更多精彩内容

  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,149评论 0 13
  • Swift学习有问必答群 : 313838956 ( mac版QQ有权限要求, 入群只能通过手机版 QQ申请...
    Guards翻译组阅读 6,605评论 9 13
  • 字符串和字符 甲串是一系列字符,如的"hello, world"或"albatross"。Swift字符串由Str...
    Fuuqiu阅读 1,036评论 0 0
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,233评论 0 4
  • 感觉这个周所有的节日都赶在了一起,会收到一堆的节日祝福。周五是冬至,按常理要吃饺子,几个姑娘都没有包饺子的时间(主...
    失真图阅读 143评论 0 0