2019-03-11

"""秃子养成记"""

1.什么是字符串

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

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

Python中只有字符的概念,没有字符对应的数据类型
字符串的基本单元就是字符,又叫字符串的元素
a.基本字符 - 数字、字母、常用符号、中文等
b.转义字符 - 通过转义符号\后面跟不同的符号来表示特殊功能或者特殊意义的字符
\n - 换行
' - 一个单引号
" - 一个双引号
\ - 一个反斜杠
\t - 制表符

阻止转义:在字符串的最前面加r/R,可以阻止字符串的转义字符转义(一般用于正则表达式)

c.编码字符 - \u后面跟四位的十六进制数,来表示一个字符。这个四位的十六进制数对应的值是字符的编码值

 0-9,a/A-f/F
print('werwq+\u4f33')

3.字符编码

Python中的字符采用的是Unicode编码
计算机存储数据的时候只能存数字,而且存的是数字的补码(是以二进制的格式进行存储)

100  # 十进制数
print(bin(100))  # bin(数字)  - 获取指定数字对应的二进制
print(0b1100100)
print(oct(100))  # oct(数字)  - 获取指定数字的八进制
print(0o144)
print(hex(100))   # hex(数字)  -  获取指定数字的十六进制
print(0x64)

编码:每个字符在计算机存储的时候都会对应一个固定且唯一的数字,这个数字就是这个字符的编码。
每个字符和数字的一一对应关系就是编码表,常见的编码表有:ASCII表和Unicode编码表
ASCII码表只对数字字符、字母字符、英文符号进行编码
Unicode编码表是对ASCII的扩充,能够对世界上所有的符号进行编码:4e00-9fa5
chr(编码值) - 获取编码值对应的字符
ord(字符) - 获取字符对应的编码值
print(chr(37041),chr(40092))
print(ord('邱'),ord('鲜'))

# for code in range(0x4e00,0x9fa5):
#     print(chr(code),end=',')  # 获取所有的汉字

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

a.获取单个字符
"""
a.语法:字符串[下标] - 根据下表获取字符串中对应的字符,结果是获取到的字符
b.说明:字符串 - 可以是字符串值,也可以是字符串是变量,结果是字符串的表达式都可以
[] - 固定写法
下标 - 又叫索引,一旦字符串确定,那么字符串中的每个字符都会对应一个下标
表示这个字符在字符串中的位置。下标的范围是0~到字符串长度减1
0表示第一个,1表示第二个,以此类推。(通用的)
下标范围还可以是-1到-字符串长度减1,-1表示倒数第一个

c.注意:获取单个字符的时候下标不能越界
"""

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

"""
a.语法:字符串[开始下标:结束下标:步长] - 从开始下标开始,获取到结束下标为止
b.说明:可以是字符串值,也可以是字符串是变量,结果是字符串的表达式都可以
[],: - 固定写法
开始下标、结束下标 - 下标值、开始下标可以取到,结束下标对应的字符一定取不到
步长 - 整数,可以使正也可以是负
c.注意:下标可以越界
如果步长为正(从前往后取),开始下标对应的字符要在结束下标对应的字符前才能获取到值
如果步长为负(从后往前取),开始下标对应的字符要在结束下标对应字符的后面才能获取到值

"""
"""
切片的语法可以对步长、开始下标和结束下标进行省略
1.省略步长(步长默认为1)
字符串[开始下标:结束下标] == 字符串[开始下标:结束下标:1]
2.省略开始下标
字符串[:结束下标:步长] - 如果不出为正,从字符串开头往后取:如果步长为负,从字符串最后一个字符串往前取
字符串[开始下标::步长] - 如果步长为正,取到最后一个字符为止;如果步长为负,取到第一个字符为止
"""

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

"""
方法1:直接遍历
for 变量 in 字符串:
循环体

方法2:通过遍历下标,来遍历字符串
for 下标 range(字符串长度):
字符串[下标]
"""

for char in '2345678wety':
    print(char)
str3='erwfwsfawet2345r23'
for index in range(len(str3)):
    print('================',str3[index])

字符串相关运算

a.数学运算:字符串支持加法运算和乘法运算
语法:字符串1 + 字符串2 - 将两个字符串拼接在一起产生一个新的字符串
注意:加号两边,必须都是数字。或者都是字符串,数字和字符串不能混合相加!

语法:字符串 * 正整数 / 正整数 * 字符串 - 指定的字符串重复指定次数,产生一个新的字符串

b.比较运算:字符串支持所有的比较运算
字符串1 == 字符串2,字符串1 != 字符串2 - 判断两个字符串是否相等
两个字符串比较大小:让两个字符串相同位置的字符一一比较,找到第一对儿不相等的字符,判断编码值的大小

应用:
判断一个字符是否字母:'a'<=char<'z' or 'A'<=char<='Z'
判断一个字符是否是数字:'0'<=char<='9'
判断一个字符是否是中文(4e00~9fa5):\u4e00<=char<=\u9fa5 或者 0x4e00<=ord(char)<=0x9fa5

练习:输入一个任意字符串,统计输入内容中字母的个数

num1=input('请输入:')
a=0
for char in range(len(num1)):
    if'a' <= num1[char] < 'z' or 'A' <= num1[char] <= 'Z':
        a += 1
print('字母个数是:%d'% a)

3.in h和 not in 操作

字符串1 in 字符串2 - 判断字符串1是否在字符串2中(判断字符串2是否包含字符串1)
字符串1 not in 字符串2 - 判断字符串1是否不在字符串2中(判断字符串2是否不包含字符串1)
print('abc' in 'abcdeawer') # Ture
print('abc' not in 'abcwewfdwe') # False

4.常用内置函数

len(字符串) - 求字符串长度
str(数据) - 将其他数据转换成字符串,所有的数据都能转成字符串,转换的时候直接在数据的外面加引号
print(int('+3423')) # 只有去掉引号后,本身就是一个整数的字符串才能转换成整数
print(float('234.3')) # 只有去掉引号后,本身就是一个数字的字符串才能转换成浮点型
print(bool('wert')) # 除了空串会转换成False,其他都会转换成True

list1=['this','is','a','list']
print(str)

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

print(str.capitalize())#首字母大写

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

print(str.title())#首字母大写,按空格算进行分割
  1. lower()/upper()转换字符串中所有大写/小写字符转换为小写/大写.
print(str.lower())#转换为小写
print(str.upper())#转换为大写

4.center(width, fillchar)返回一个指定的宽度 width 居中的字符串,fillchar 为填充的字符,默认为空格。

print(str.center(50,'*'))

5.ljust(width[, fillchar])返回一个原字符串左对齐,并使用 fillchar 填充至长度 width 的新字符串,fillchar 默认为空格。

print(str.ljust(50,'*'))

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

print(str.rjust(50,'*'))
  1. endswith(suffix)检查字符串是否以 obj 结束,
    如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束,如果是,返回 True,否则返回 False.
print(str.endswith('ED'))

8.startswith(str, beg=0,end=len(string))检查字符串是否是以 obj 开头,是则返回 True,
否则返回 False。如果beg 和 end 指定值,则在指定范围内检查。

print(str.startswith('One'))
  1. expandtabs(tabsize=8)把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8
 print('\tgs'.expandtabs(1))**注意:此处的tab是指tab符号,而不是tab键打出来的效果

10.find(str, beg=0 end=len(string)) 则检查是否包含在指定范围内,如果包含返回开始的索引值(下标),否则返回-1

print(str.find('ou'))

11.rfind(str, beg=0,end=len(string))类似于 find()函数,不过是从右边开始查找.

print(str.rfind('you'))
  1. index(str, beg=0, end=len(string))跟find()方法一样,只不过如果str不在字符串中会报一个异常,即返回0.
print(str.index('ou'))

13.rindex( str, beg=0, end=len(string))类似于 index(),不过是从右边开始.

print(str.rindex('you'))
  1. isalnum()如果字符串至少有一个字符并且所有字符都是字母或数字则返 回 True,否则返回 False
print(str.isalnum())
  1. isalpha()如果字符串至少有一个字符并且所有字符都是字母则返回 True, 否则返回 False
print(str.isalpha())

16.isdigit()如果字符串只包含数字则返回 True 否则返回 False..

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

18.isdecimal()检查字符串是否只包含十进制字符,如果是返回 true,否则返回 false。

print('213'.isdecimal())
  1. isnumeric()如果字符串中只包含数字字符,则返回 True,否则返回 False(中文数字也可以)
print(str.isnumeric())
  1. isspace()如果字符串中只包含空白,则返回 True,否则返回 False.
print(str.isspace())

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

print(str.istitle())

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

print(str.isupper())

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

print('*'.join(str))
  1. len(string) 返回字符串长度
print(len(str))
  1. lstrip()截掉字符串左边的空格或指定字符。
print(str.lstrip('O'))
  1. rstrip()删除字符串字符串末尾的空格.
print(str.rstrip())
  1. strip([chars])在字符串上执行 lstrip()和 rstrip()
print(str.strip())
  1. max(str)min(str)返回字符串 str 中最大/最小的字母。
print(max(str))
print(min(str))
  1. replace(old, new [, max])把 将字符串中的 str1 替换成 str2,如果 max 指定,则替换不超过 max 次。
print(str.replace('you','I',3))

30.split(str="", num=string.count(str))num=string.count(str)) 以 str 为分隔符截取字符串,如果 num 有指定值,则仅截取 num 个子字符串

print(str.split('e',2))

‘e'分隔的符号,2'的含义为将原序列分割为3个部分,为1是割分为两部分,此处可以省略,省略则表示见‘e’就分割

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

str2='we\rare\r\nfamily\n'
print(str2.splitlines())
print(str2.splitlines(True))

32.swapcase()将字符串中大写转换为小写,小写转换为大写

print(str.swapcase())#大小写互换

33.zfill (width)返回长度为 width 的字符串,原字符串右对齐,前面填充0

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