2018-08-22day3笔记

认识字符串

1.什么是字符

a. 用单引号或者双引号括起来的字符就是字符传
例如 :

'yeyu' "叶玉" 'xiaoyezi'     
name='yeyu'
poem="床前明月光"
2.转意字符

说明:python 中没有字符类型,如果要表示字符,就是用一个长度是1的字符串表示,例如:'a','1',
长度:指的是字符串中的个数,例如: 'abc' 长度是3,'abc 123,你好'长度是:10
a.通过\将一些特殊的字符转换成一个具有特殊意义的字符,就是转义字符

b. 常见的转义字符:

\n --换行
\t --制表符(相当于tab  健)
\\ --\
\' --'
\"--"

在计算字符串长度的时候,转义字符的长度是1

xiaoyezi='123\n456'
print(xiaoyezi)
123
456

yeyu='123,\t456'
print(yeyu)
123,  456

str1 = 'abc\\scd'
print(str1)
abc\scd

str2 = 'abc\'123"abc'
print(str2)
abc'123"abc

str3 = "abc\"123"
print(str3)
abc"123
3.Unicode编码

a.python中字符的编码采用的是Unicode编码

b.Unicode是采用两个字节对一个字符进行编码(2^15),能够将世界上所有的符号进行编码

c.Unicode编码中包含了ascii码

将数值转换成对应的符号的过程就是反编码(解码)
0 --> 0
'0' --> 48

# 1).将Unicode码转换成字符: chr(编码)
print(chr(0xA001))
print(chr(0xAC00))
print(chr(0x4e60))

# 2).将字符转换成Unicode编码: ord(字符)
code1 = ord('余')  # 结果是10进制的
code2 = ord('婷')
print(hex(code1), hex(code2))

字符串实质可以是一个不可变的序列,序列内容是字符。
一旦字符串确定,那么里面的字符和字符的位置就不可变了,例如:'abc'

1.怎么获取单个字符

'''
python中的字符串,可以通过下标(索引)来获取指定位置上的字符:字符串[索引]
说明:
a.字符串:可以是字符串值,也可以是字符串变量
b.[]: 中括号使固定语法
c.索引:从0开始到字符串长度减1 (0对应第一个字符);
-1 ~ -长度(-1对应的是最后一个字符, -2对应的是倒数第2个字符)

注意:索引不能越界,否则会报错(产生异常)
str1 = 'acbd' # a->0, c->1, b->2, d->3
print(str1[0])
print(str1[4]) IndexError: string index out of range
name = '王海飞'
print(name[1])
print(name[-1], name[-2], name[-3])
print('abc'[2])
print(name[-4]) # IndexError: string index out of range

  1. 获取部分字符(获取子串) -- 切片
    字符串[下标1:下标2] : 从下标1开始,获取到下标2前的所有的字符(从下标1开始,每次下标值加1,一直加到下标2前)
注意:下标1对应的位置,一定要在下标2对应的位置前

str2 = 'hello world'

print(str2[0:4]) # hell
print(str2[2:7]) # llo w
print(str2[2:-1]) # llo worl
print(str2[3:12]) # 切片时下标可以越界,越界的时候就取临界值
print(str2[-5:-2])
print(str2[-5:9])
字符串[下标1:下标2:步进]
从下标1开始获取,每次下标值增加步进值,没增加一次取一个字符,直到取到下标2前为止
注意:a.步进如果是正数,那么下标1对应的字符的位置一定要下标2对应的位置的前面;
步进是负数,那么下标1对应的位置一定要在下标2对应的位置的后面
b.下标2对应字符是取不到的
str3 = 'helloPython'
print(str3[0:5:2]) # hlo 步进:3 hl
print(str3[-1:5:-1]) # nohty

下标的省略

切片的时候,下标1和下标2是可以省略的

下标1省略:默认从开头开始获取(开头可能是字符串的第一个字符,也可能是字符串的最后一个字符)

"""
str4 = 'good good study,day day up'
print(str4[:4])
print(str4[:4:-1])

"""
下标2省略: 从下标1位置开始获取,获取到结束(结束可能是字符串的最后一个字符,也可能是字符串的第一个字符)
"""
print(str4[1:])
print(str4[3::-1])

print(str4[:]) # good good study,day day up
print(str4[::-1]) # pu yad yad,yduts doog doog

练习:要求将一个字符串中所有下标是奇数位上的字符获取出来

str5 = 'abcdefgh'
print(str5[1::2]) # 1. + 运算符
"""
字符串1+字符串2:
python支持两个字符串相加, 其效果就是将两个字符串拼接在一起产生一个新的字符串

注意:如果+的一边是字符串,那么另外一个也必须是字符串
"""
print('abc'+'123')
str1 = 'world'
newstr = 'hello' + ' ' + str1
print(newstr)

print(10+'abc') # TypeError: unsupported operand type(s) for +: 'int' and 'str'

2. * 运算符

"""
字符串1整数: 字符串重复多次
"""
print('abc'
3)

3. 所有的比较运算符

str1 = 'abc'
print('abc' == str1)
print(str1 != 'ab')

比较大小

"""
str1 > str2; str1 < str2
让str1中的每一位的字符,分别和str2中每一位的字符依次比较。
直到不同为止,再看不同字符中谁的编码值大或者小
"""
print('dbcd' > 'abcde')
print('二' > '余婷')
print(ord('二'), ord('余'))

4.in 和 not in

"""
str1 in str2: 判断str1是否在str2中(str2是否包含str1 / str1是否是str2的子串)

结果是布尔值
"""
print('abc' in 'a1b2cdefg')
print('f' not in 'python')

5.获取字符串长度

字符串的长度,指的是字符串中字符的个数

len()内置函数

str3 = 'project'
print(len(str3), len('abc 123\n'))

补充:空串

str4 = ''
str5 = ""
print(len(str5))

len1 = len(str3) # len1 = 7
index = len1 - 1 # 6
print(str3[-1], str3[index])

6.阻止转义

在字符串的最前面添加r/R可以阻止转义

print('a\nb','a\nb\')
print(len('a\nb\')) # 4

print(r'a\nb',R'a\nb\')
print(len(r'a\nb\')) # 6

print('a\nb\\') # a\nb\
print('\\n\') # \换行\

print(r'\\n\') # \\n\

练习

str1 = r'\nabc123' 求:str1[3] b

str2 = 'abc123\123' 求: str2[-5] 3

python为字符串提供了很多的内建函数

字符串.函数()

注意:这些所有的函数的功能都不会影响原来的字符串,而是产生一个新的字符串

str1 = 'hello python'

1.capitalize() 将字符串的第一个字符转换为大写

newstr = str1.capitalize()
print(newstr, str1)

print('abc'.capitalize())

2.center(width, fillchar)

让字符串变成width对应的长度,原内容居中,剩余的部分使用fillchar的值来填充

witdh - 整数; fillchar - 任意字符

print('abc'.center(10, '*')) # ***abc****

3. rjust(width, fillchar)

让字符串变成width对应的长度,原内容靠右,剩余的部分使用fillchar的值来填充

2015103001 2015103002 2015103015

1 2 3 4 5 11 20 ----> 001 002 003 010 011 012

1 --> 0001 11 -> 0011 123 -> 0123

number = '12'
new_id = number.rjust(4, '0')
print(new_id)

3.原字符串.count(str)

判断str值在原字符串中出现的次数

str -> 字符串

print('abcabaa'.count('ab'))

print('贰1壹二2一'.isnumeric())

4.str1.join(str2)

在str2中的每个字符串之间插入一个str1

print('-+'.join('abc'))

5.str1.replace(old, new)

将str1中old全部替换成new

new_str = 'abcdahulapuyeahj'.replace('a','+')
print(new_str)

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