第四章 数据类型 (字符串、字节)str

"""

第四章 数据类型 (字符串、字节)str

"""

"""

字符串:就是由字符组成的序列,字符串中的每一个元素还是字符串。

特性:字符串是不可变的序列类型。字符串的元素是有序的。

"""

# 一、字符串的创建

# 三种方式

"""

单引号

双引号

三引号

"""

# 使用单引号和双引号创建字符串,使用方式几乎一致

# 单引号和双引号交替使用可以达到输出对方的效果

s="helloworld"

s="i am 'ok'"

print(s)

s2='i am "ok"'

print(s2)

# 单引号和双引号定义字符串,一般都在一行定义 ,否则需要续行符(\)

a="引号和双引号定义字符串,一般都在引号和双引号定义字符串, "\

"一般都在引号和双引号定义字符串,一般都在引号和双引号定义字符串,一般都在"

print(a)

b="天行健,君子以自强不息。\n地势坤,君子以厚德载物"

print(b)

#三引号定义字符串,自带换行,但是三引号不是注释。

c="""

天行健,君子以自强不息。

地势坤,君子以厚德载物

"""

print(c)

# 练习:输出一首诗,使用双引号和三引号分别输出。

# 定义空字符串,不是None

str_null=""

print(type(str_null))

print(type(None))

# 二、字符串的转义序列(将特殊的字符转义)

s="i am 'ok'"

# 双引号,单引号的转义使用\,放到要转义字符的前面

s="i am \"ok\""

print(s)

# \n 换行

# \r 回车

# \n\r

# window下:

# \r,要回到当前行的行首,不会换到下一行,如果直接输出,会将之前的内容覆盖。

print("aaaa\rbbbbb")

print("aaaa\n\rbbbbb")

#\n ,代表换行,换到当前位置的下一行(常用)

print("aaa\nbbbb")

# r:在字符串定义的前面加r,能够让字符串原样输出

print(r"aaa\bbbbbb")

# 三、字符串的操作

"""

1. 运算符

2. 索引

3. 切片

"""

# 1. 运算符  +  *   in  not in    is  is not   ==  >  < !=

# + 合并  新创建字符串进行合并

a="abc"

b="bcd"

print(a,b,a+b,a,b)

# * 重复,返回的是新字符串

print(a*3,a)

print(a*3+b*2)

#in  not in 成员运算符

print("ab"  in a)

print("ac"  in a)

# is  is not 身份运算符

a="abc"

b="abc"

c=b

print(a is b)

print(c is a)

print(a ==b )

print(a ==c )

# 按元素进行比较,按照元素的ascii码进行比较

# 逐个比较

print("abc"<"abcd")

print(ord("a"))

print(ord("b"))

# 2. 索引

# 获取字符串中的单个字符串,需要使用索引

# 格式:字符串名[index]: index 可以是正数、负数、0

# 第一个元素:索引从0开始

# 正数:从左到右

# 负数:从右到左,最后一个元素是-1

# 索引是不能越界,越界会报异常。

s="abcdefg"

print(s[0])

print(s[3])

print(s[-3])

# print(s[100])

# len(o):获取字符串的长度

print(len(s))

# 索引范围: [-len(s)---len(s)-1]

# 最后一个元素:s[len(s)-1]   s[-1]

# 字符串中的元素不能修改

# s[2]="6"

# 3. 切片:获得字符串中的多个元素(按照某一个规则获得指定区域的元素)

# 格式:字符串名[start:end]

# 切片包含start,但是不包含end,到end-1

# start 和end都可以取正数、负数、0

# 区别在于方向

# start:省略,默认是0

# end:省略,默认的len(s),千万注意,不是-1

s="abcdefg"

print(s[0:3])  # end-start=截取的长度

# print(s[0:1],s[1:3])

print(s[-1:-3],"dddd")

print(s[-3:-1],"ccc")

print(s[:3],s[0:3])

print(s[1:],s[0:len(s)])

# print(s[1:],s[0:-1])

# 切片是新创建字符串(非整切片)

# 字符串的整切片指向的就是字符串本身的对象,不是新创建对象

s1=s[1:3]

print(s1,id(s1))

s2=s[:]

print(id(s[:]),id(s),id(s2))

#练习:使用字符串的切片 对日期进行获取  2018-08-20

d="2018-08-20"

year=d[:4]

print(year)

month=d[5:7]

print(month)

day=d[8:]

day=d[-2:]

print(day)

#4. 字符串的相关方法

st="abcdabcd"

# (1)count(str,start,end)统计 返回参数字符串在原串中出现的次数

# 当不写start和end参数时,默认统计的是按原字符串统计

print(st.count("a"))

# start=1 end=5  范围从1---4

print(st.count("a",1,5))

# 如果只传递一个参数 那么认为是start,结束默认为len(st)  范围是从1--len(st)

print(st.count("a",1))

# 跟切片一样,当索引(下标)超过范围时,不会报错。

print(st.count("a",20,50))

# (2) index 查找,如果查找到则返回原中的位置,如果找不到会报错

# 默认从左到右查找,查找第一次出现的位置

st="abcdabcd"

print(st.index("b"))

# print(st.index("b",2,5))

print(st.index("b",2))

# (3)find 查找,返回查找内容再原串中的位置,如果找不到不报错,会返回-1

st="abcdabcd"

print(st.find("b"))

print(st.find("b",2,5))

# 如果查找的是子串,会返回子串中第一个字符出现的位置

st="abcdabcd"

print(st.find("bc"))

print(st.find("bd"))

# (4) join:拼接字符串:将序列中的各个元素按照字符串连接。

st="abcd"

a="-"

print(a.join(st))

# (5)replace: 替换:会新创建字符串进行存储,替换结果是replace的返回值

# old:需要替换的内容

# new:替换成的内容

# count:替换的最大次数,如果不写,会将字符中符合的字符全部替换

# 会从左到右的顺序,按照替换的次数进行替换

st="abcdabcd"

print(st.replace("a","-",1))

print(st.replace("a","-",4),st)

#(6)strip 剪切,从两端去掉指定的符号

st=" abcd  "

# strip参数不写,则默认去掉空格

print(st.strip())

# 去掉两端符合条件的字符串(按挨个检索),一直去掉到不符合条件的位置。

st="aafbbcdeeafaf"

print(st.strip("a"))

print(st.strip("af"))

# 从左边剪切

print(st.lstrip("af"))

# 从右侧剪切

print(st.rstrip("af"))

#(7)split 切割:切割完的字符就没有了。

# 按照切割的参数,一分为二

# 返回值是列表

st="ab cd ef  gh d"

print(st.split(" "))

#如果split中不写参数,默认按照空格切割,会将所有的空格都切割掉。

print(st.split())

st="abababaabbaabb"

print(st.split("a"))

#(8)upper  lower

print("abcd".upper())

print("ABCDdd".lower())

# (9)isnumeric: 判断是不是数值类型

print("8".isnumeric())

print("a".isnumeric())

#(10)isalpha: 判断是不是字符

print("8".isalpha())

print("a".isalpha())

#(11)center(width,char)

#width:占位

#char: 填充的字符

s="hello world"

# 当字符串长度是奇数,填充会从右侧开始

# 当字符串长度是偶数,填充会从左侧开始

print(s.center(13,"*"))

s="hell"

print(s.center(5,"*"))



"""

字节 (序列)bytes

字节:由一些列的单字节组成

单字节:占用8个数据位: 数字 特殊的符号  英文字母等。。。不能存储汉字

"""

# 00000000

# 00000001

# 11111111

# 最多存储255种不同内容


# 一、字节创建

s="hello"

print(type(s))

# 定义字节跟字符串类似,但是需要在定义的单引号或者双引号前面加b

b=b"hello"

print(type(b))

# b=b"中国"


# 二、字节的操作:参看字符串

# 运算符、索引、切片

print(b"abc"+b"bcd")

print(b"abc"

# is ==

b=b"hello"

b1=b"hello"

b2=b1

print(b == b1)

print(b is b1)

print(b2 is b1)

print(id(b),id(b1),id(b2))


# 索引输出的是ascii

print(b[0])

# 切片不是ascii码

print(b[0:2])



# 相关方法

b=b"hello"

print(b.count(b"h"))

print(b.split(b"e"))


"""

格式化

"""

print("hello"+" world")

print("hello"+ str(8))

name="tom"

score=90

# print(name+"的成绩是"+score)


# 三种:

"""

1. %

2. format

3. 3.6之后可以是用f

"""


# 1. %

# %s === str()

# %s代表一个变量占位,后面如果有多个变量,是依次填入

name="tom"

score=90

print("%s的成绩是%s" % (name,score))

print("成绩是%s" % score)


#2.format

#{} 代表一个变量占位,后面有多个变量依次填入

s="{}的成绩是{}"

s="{0}的成绩是{1}"

print(s.format(name,score))

s="{1}的成绩是{0}"

print(s.format(score,name))


#3.f

name="tom"

score=90

print(f"{name}的成绩是{score}")

print("i am 'ok'  and 'addf'")

print(len(""))

print(bool("111"))

print("akdfjalj\\djdlkjf")

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

推荐阅读更多精彩内容