字符串一旦创建, 不可修改, 一旦修改或者拼接, 都会造成重新生成字符串, 因为内存存数据是一个挨着一个存的, 如果增加一个字符串的话, 之前的老位置只有一个地方, 不够, 这是原理性的东西, 在其他语言里面也一样
7 个必须要背会的方法
- join
- split
- find
- strip
- upper
- lower
- replace
4 个必须会的灰魔法
len
for 循环
索引
切片
1. 字符串 str 所有的功能都放在 str 里面了
n1 = "frank" n2 = 'root' n3 = """eric""" n4 = '''tony'''
双引号 单引号 三个双引号 三个单引号 引起来的都是字符串
字符串的加法
- >>> n1 = "frank"
- >>> n2 = "sb"
- >>> n3 = "db"
- >>> n4 = n1 + n2 + n3
- >>> print (n4)
- franksbdb
- >>>
字符串的乘法
- >>> n1 = "frank"
- >>> n3 = n1 * 6
- >>> print (n3)
- frankfrankfrankfrankfrankfrank
字符串类型的魔法, 有太多种了, 下面列举几个常用的
1.capitalize() 魔法是首字母大写 [ˈkæpɪtəlaɪz] 用大写字母写
- name = "gouguoqi"
- v = name.capitalize()
- print (v)
- C:\python35\python3.exe D:/pyproject/day10/1.py
- Gouguoqi
- 2.casefold()
3.lower() 这 2 个魔法都是把字符串中的大写字母变成小写
casefold 最牛逼, 它可以把未知的字符串的的对应关系也能变小写, lower 只能我们常用的英文变小写
upper 使字符串全部变成大写
- name = "GOGUoQi"
- v1 = name.casefold()
- print (v1)
- v2 = name.lower()
- print (v2)
- C:\python35\python3.exe D:/pyproject/day10/1.py
- goguoqi
- goguoqi
- 4.center(self, width, fillchar=None)
跟 ljust (左对齐) rjust(右对齐)相对应
self 这个可以忽略, width, 这种后面必须要带一个值, 就相当于买东西必须要带钱, fillchar=None 表示默认是 None sub 代表子序列
- #center 功能是将字符串居中显示
- #20 代表宽度,- 代表的是空余的地方用什么填充, 只能是一个字符, 默认是空格
- name = "gouguoqi"
- v = name.center(20,"-")
- print (v)
- C:\python35\python3.exe D:/pyproject/day10/1.py
- ------gouguoqi------
5.count(self, sub, start=None, end=None) [kaʊnt] 计数
计算一个指定的字符出现了几次, 可以是多个字符
sub 代表子序列
专业说法: 在字符串中寻找子序列出现的次数, 可以指定从第几个字符串开始, 第几个字符串结束的范围, 0 为第一个字符 比如 1,4 表示的是从 第二个字符到第第五个字符之间的范围, 第五个字符不算
- name = "gouguoqi"
- v = name.count("u")
- print (v)
- C:\python35\python3.exe D:/pyproject/day10/1.py
- 2
- name = "gouguoqigougoqi"
- v = name.count("go")
- print (v)
- C:\python35\python3.exe D:/pyproject/day10/1.py
- 3
从第 3 个位置到第 5 个位置中 u 这个字符出现了几次, 不算第五个位置, 因为是个区间
黄色为区间范围内
- name = "tyuiop"
- v = name.count("u",2,4)
- print (v)
- C:\python35\python3.exe D:/pyproject/day10/1.py
- 1
- 6.encode
- 7.decode
- 8.endswith(self, suffix, start=None, end=None)
以什么结尾, 判断结果是否为真或者假
- name = "beiye"
- v = name.endswith("e")
- print (v)
- C:\python35\python3.exe D:/pyproject/day10/1.py
- True
从 1 到 3 的范围内, 以 i 结尾, 为真
0 为第一个字符, 因为是区间的概念, 所以第四个字符不算, 就是第四个字符往左的
- name = "beiye"
- v = name.endswith("i",1,3)
- print (v)
- C:\python35\python3.exe D:/pyproject/day10/1.py
- True
- 9.starswith(self, suffix, start=None, end=None)
以什么字符串开头 判断结果是否为真或者假
- name = "beiye"
- v = name.startswith("b")
- print (v)
- C:\python35\python3.exe D:/pyproject/day10/1.py
- True
0 为第一个字符, 在第二个字符和第四个字符这个范围, 是 i 开头, 返回正确
- name = "beiye"
- v = name.startswith("i",2,4)
- print (v)
- C:\python35\python3.exe D:/pyproject/day10/1.py
- True
10.find(self, sub, start=None, end=None) ***** 重要
还有一个 index 的方法, 不过这个找不到的话程序直接崩溃了, 所以肯定是不用的, find 找不到是返回 - 1
从开始往后找, 找到第一个字符之后, 获取其位置就不往后找了
- name = "beiyebeiyet"
- v = name.find("t")
- print (v)
- C:\python35\python3.exe D:/pyproject/day10/1.py
- 10
在 2 到 6 的区间内找 t 这个子序列, 因为找不到所以返回 -1
- name = "beiyebeiyet"
- v = name.find("t",2,6)
- print (v)
- C:\python35\python3.exe D:/pyproject/day10/1.py
- -1
11.format(self, *args, **kwargs) [ˈfɔ:mæt] 格式 ***** 重要
格式化, 将一个字符串中的占位符替换为指定的值
- test = "i am {name},age {a}"
- print (test)
- v = test.format(name='gouguoqi',a='28')
- print (v)
- C:\python35\python3.exe D:/pyproject/day10/1.py
- i am {name},age {a}
i am gouguoqi,age 28
用字典的方式传进去, 前面得加 ** 才行
- test = "i am {name},age {a}"
- print (test)
- v = test.format(**{"name":"gouguoqi","a":28})
- print (v)
C:\python35\python3.exe D:/pyproject/day12 列表 / dict-way.py
i am {name},age {a}
i am gouguoqi,age 28
如果中括号里面什么都不写, 写{0} {1} {2}, 代表第一个占位符, 第二个占位符, 第三个占位符
下面就不用再写 name = 啥了. 直接写值就行了, 写 3 个值, 就对应上面 3 个占位符, 依次从左向右
- test = "i am {0} age {1} weight {2}"
- print (test)
- v = test.format('gouguoqi','28','90kg')
- print (v)
- C:\python35\python3.exe D:/pyproject/day10/1.py
i am {0} age {1} weight {2}
i am gouguoqi age 28 weight 90kg
- test = "猥琐的 {0}, 最喜欢在{1} 地方干{2}"
- name = input("请输入你的名字:")
- place = input("请输入你经常去的地方:")
- like = input("请输入你平时的爱好:")
- v = test.format(name,place,like)
- print(v)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
请输入你的名字: 修电脑
请输入你经常去的地方: 网吧
请输入你平时的爱好: 撸管
猥琐的修电脑, 最喜欢在网吧地方干撸管
12.format_map(self, mapping)
format_map 也是格式化, 传入的值必须是这样的格式{ "name": 'gouguqi',"a": 28 }
这个格式就是一个字典格式
- test = "i am {name} age {a}"
- print (test)
- v = test.format_map({ "name": 'gouguqi',"a": 28 })
- print (v)
- C:\python35\python3.exe D:/pyproject/day10/1.py
- i am {name} age {a}
i am gouguqi age 28
(学了后面才发现, 这里的参数就是字典类型)
(v = test.format(**{"name":"gouguoqi","a":28}))而上面的 format 用字典的方式得加 **
13.isalnum(self)
判断字符串中只能由字母和数字, 不能有特殊符号
- test = "4567ghjkk_!"
- v = test.isalnum()
- print (v)
- C:\python35\python3.exe D:/pyproject/day10/1.py
- False
- test = "4567ghjkkKP"
- v = test.isalnum()
- print (v)
- C:\python35\python3.exe D:/pyproject/day10/1.py
- True
- 14.isalpha(self)
- Return True if all characters in S are alphabetic(字母)
and there is at least one character(至少一个字母) in S, False otherwise.
翻译结果: 字符串里面都是字母, 并且至少是一个字母, 结果就为真,(汉字也可以)其他情况为假
- S = "2"
- v = S.isalpha()
- print (v)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
- False
- S = "IIKk9123mm"
- v = S.isalpha()
- print (v)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
- False
- S = "IIKkkkkkmnbvgghjj"
- v = S.isalpha()
- print (v)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
- True
- S = "IIKkkkkkmn 汉字 ghjj"
- v = S.isalpha()
- print (v)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
True
15.isdecimal(self) [ˈdesɪml] 十进制的
判断当前字符串是否为数字
Return True if there are only decimal characters (十进制字符) in S,
False otherwise.
- S = "65434334000000000"
- v = S.isdecimal()
- print (v)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
- True
- S = "66k"
- v = S.isdecimal()
- print (v)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
False
16.isdigit(self) [ˈdɪdʒɪt] 数字的
判断字符串是否是数字, 特殊的数字也可以
这个比 isdecimal 更牛逼些, 一些特殊的数字也返回 True
Return True if all characters in S are digits(数字)
and there is at least one character in S, False otherwise.
- S = "6656"
- v1 = S.isdecimal()
- v2 = S.isdigit()
- print (v1,v2)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
False True
17.isnumeric(self) [nju:'merɪk] 数字的
判断如果是数字的数值的就返回为真, 比 isdigit isdecimal 更牛逼, 这个也能识别特殊的数值, 也能识别中, isdigit 能识别特殊的值但是不支持中文 ,isdecimal 只能是十进制的, 特殊的不行
以后工作中常用的就是 isdecimal, 因为这就是判断十进制数字的, 特殊的值和中文并不能做运算, 所以不常用
- Return True if there are only numeric(数字的, 数值的) characters in S,
- False otherwise
- S = "6656"
- v1 = S.isdecimal()
- v2 = S.isdigit()
- v3 = S.isnumeric()
- print (v1,v2,v3)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
- False True True
- S = "二"
- v1 = S.isdecimal()
- v2 = S.isdigit()
- v3 = S.isnumeric()
- print (v1,v2,v3)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
False False True
18.isprintable(self) [ˈprɪntəbl] 可打印的
如果我们能看到真实的可以打印出来的东西就是 True
像 \ t \n 这种我们肉眼不可显示的东西是打印不出来的, 所以在包含这些的时候就是 false
- Return True if all characters in S are considered
- printable in repr() or S is empty, False otherwis
- S = "556546 ___ 二 &*,"
- v = S.isprintable()
- print (v)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
- True
- S = "556546sd\tf"
- v = S.isprintable()
- print (v)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
- False
- S = "55\n6546sdf"
- v = S.isprintable()
- print (v)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
- False
- 19.isspace(self)
判断你的字符是否全部是空格, 一个空格也行, 多个空格也行, 如果全部是空格就为真, 不全部是空格就是假, 什么都不写也为假
Return True if all characters in S are whitespace
and there is at least one character in S, False otherwise
一个空格
- S = " "
- v = S.isspace()
- print (v)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
True
多个空格为真
- S = " "
- v = S.isspace()
- print (v)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
True
什么都不写为假
- S = ""
- v = S.isspace()
- print (v)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
False
20.istitle (self) [ˈtaɪtl] 标题
判断知否是标题(标题是每个字符串的首字母大写)
- S = "follow uncased characters and lowercase characters only cased on"
- v1 = S.istitle()
- print (v1)
v2 = S.title() 这个方法是把字符串中的首字母变为大写, 也就是转换成标题
- print (v2)
- v3 = v2.istitle()
- print (v3)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
False 判断 v1 结果是 v1 不是标题
Follow Uncased Characters And Lowercase Characters Only Cased On 把 v1 转化成标题
True 再次判断 v3, 结果是标题了
21.title(self)
这个方法是可以把字符串的首字母变成大写, 也就是变成标题
- S = "my name is gouguoqi"
- v = S.title()
- print (v)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
My Name Is Gouguoqi
22.isupper(self) uppercase ['ʌpəˌkeɪs] 大写字母
判断全部是大写字母才是真, 至少有一个字符, 否则为假
Return True if all cased characters in S are uppercase and there is
at least one cased character in S, False otherwise
- S = "GOUGUOQI"
- v = S.isupper()
- print (v)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
True
其中有一个字符为小写, 结果就是 false 了
- S = "GOUgUOQI"
- v = S.isupper()
- print (v)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
False
23.islower(self) lowercase 小写字母
判断全部是小写字母才是真, 至少有一个字符, 否则为假
Return True if all cased characters in S are lowercase and there is
at least one cased character in S, False otherwise
- S = "woaini"
- v = S.islower()
- print (v)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
True
也可以包含特殊符号和数字
- S = "woaini*&^%$#@!998"
- v = S.islower()
- print (v)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
True
就是不能有大写字母, 有大写字母就为假
- S = "woaini*&^%$#@!998Y"
- v = S.islower()
- print (v)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
False
24.join(self, iterable)***** 非常重要的方法
将字符串中的每个元素按照指定分隔符进行拼接
Return a string which is the concatenation of the strings in the
iterable. The separator between elements is S
separato [ˈsepəreɪtə(r)] 分隔符
- S = "我爱学习"
- v = " ".join(S)
- print (v)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
我 爱 学 习
- S = "我爱学习"
- v = "_".join(S)
- print (v)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
我_爱_学_习
25.ljust(self, width, fillchar=None) left 左对齐
给字符串一个宽度, 使字符串左对齐, 右边用指定的字符填满, 默认是空格
- Return S left-justified in a Unicode string of length width. Padding is
- done using the specified fill (使什么填满)character (default is a space).
- S = "woaini"
- v = S.ljust(20)
- print (v
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
woaini
用 * 来填充空白处
- S = "woaini"
- v = S.ljust(20,'*')
- print (v)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
woaini**************
26.rjust right 右对齐
- S = "woaini"
- v = S.rjust(20)
- print (v)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
woaini
用 * 来填充空白处
- S = "woaini"
- v = S.rjust(20,'*')
- print (v)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
- **************woaini
- 27.lower
使字符串变成小写
- S = "GouGuoQi"
- v = S.lower()
- print (v)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
gouguoqi
28.upper 使字符串变成大写
- S = "gouguoqi"
- v = S.upper()
- print (v)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
GOUGUOQI
29. lstrip 去除字符左边的空格(包括 \ t \n), 还可以去除指定的字符串
移除指定字符的时候, 按照字符最多匹配
也叫按照最长公共子序列匹配, 什么是最长公共子序列
beiye
woaiye iye 就是最长公共子序列
Return a copy of the string S with leading whitespace removed.
If chars is given and not None, remove characters in chars instead.
given 指定的
- S = "gouguoqi"
- v = S.lstrip()
- print (v)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
gouguoqi
去除左边的 g
- S = "gouguoqi"
- v = S.lstrip('g')
- print (v)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
ouguoqi
30.rstrip 去除字符串右边的空格 (包括 \ t \n)还可以去除指定的字符串
- S = "gouguoqi"
- v = S.rstrip()
- print (v)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
gouguoqi
去除右边的 qi
- S = "gouguoqi"
- v = S.rstrip('qi')
- print (v)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
gouguo
31.strip ***** 重要
去除字符串左右两边的空格 (包括 \ t \n) 还可以去除指定的字符串
- S = "goug uoqi"
- v = S.strip()
- print (v)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
goug uoqi
去除开头和结尾
- S = "gouguoqi"
- v = S.strip('goi')
- print (v)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
- uguoq
- 32.maketrans(self, *args, **kwargs)
- 33.translate(self, table)
32 和 33 是一起用的, 首先得创建一个对应关系
S1 和 S 的字符是一一对应的
v 是定义了一个字符串的变量
m 是创建了一个对应关系
n 是 v 这个变量用 translate 的这个方法, 以对应关系是 ("aeiou","12345") 进行替换
意思是字符串中的 a 会用 1 替换, e 会用 2 替换, i 会用 3 替换, o 用 4 替换, u 用 5 替换
- # S = "aeiou"
- # S1 = "12345"
- v = "asdfifkjsedfkom,s.u.sdfasdfa"
- m = str.maketrans("aeiou","12345")
- n = v.translate(m)
- print (n)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
1sdf3fkjs2dfk4m,s.5.sdf1sdf1
34. partition(self, sep) [pɑ:ˈtɪʃn] 分割, 分开 *****(会用到)
用指定的字符分割, 找到第一个指定的分割字符之后就不再继续找了, 直接把字符串分成 3 部分, 第二部分是分割字符本身, 剩下的就是一组, 开头是一组, 这个方法只能把字符串分割成 3 份
- S = "tesdfsffgbnhjjsghj"
- v = S.partition('s')
- print (v)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
('te', 's', 'dfsffgbnhjjsghj')
35. rpartition 从字符串右边开始以指定的字符分割符进行分割
也是只能分割成 3 份
- S = "tesdfsffgbnhjjsghj"
- # v = S.partition('s')
- # print (v)
- v1 = S.rpartition('s')
- print (v1)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
('tesdfsffgbnhjj', 's', 'ghj')
36.split [splɪt] 分裂 分开 ***** 重要
不加参数默认是以指定的分割字符分割成 n 份, 但是不显示分割字符
- S = "tesdfsffgbnhjjsghj"
- v2 = S.split('s')
- print (v2)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
['te', 'df', 'ffgbnhjj', 'ghj']
加了一个参数 2, 代表以 s 这个字符为分隔符, 进行分割 2 次操作, 后面就不分割了
如果是 3 的话, 就是分割 3 次, 后面就不分割了
- S = "tesdfsffgbnhjjsghj"
- v2 = S.split('s',2)
- print (v2)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
['te', 'df', 'ffgbnhjjsghj']
37. rsplit 从字符串右边开始, 以指定的分割字符串进行分割, 不加参数默认是以指定的分割字符分割成 n 份, 但是不显示分割字符, 跟 split 用法一致, 只不过这个是从右边开始
- S = "tesdfsffgbnhjjsghj"
- v3 = S.rsplit('s',2)
- print (v3)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
['tesdf', 'ffgbnhjj', 'ghj']
正则表达式也可以进行分割, 可以自己设置是否想要显示分割字符, 自己来定的
正则表达式是 partiton 和 split 的这 2 个方法的功能合集
比如要计算一大堆运算的结果
9*7/5+9-9/3*1
先拿 2 个做例子吧
9*7
如果我用 partition 这个方法进行分割, 得到的结果是
9 * 7
如果我用 split 这个方法进行分割, 得到的结果是
9 7
38. splitlines 以换行为分割符进行分割, 默认参数是 False,True 参数代表保留换行符
Return a list of the lines in S, breaking at line boundaries.
Line breaks are not included in the resulting list unless keepends
- is given and true
- S = "sdfggh\nqe\nedd"
- v = S.splitlines()
- print (v,)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
- ['sdfggh', 'qe', 'edd']
- S = "sdfggh\nqe\nedd"
- v = S.splitlines(True)
- print (v,)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
- ['sdfggh\n', 'qe\n', 'edd']
- 39. swapcase(self)
把大写变小写, 把小写变大写
- Return a copy of S with uppercase(大写) characters converted to lowercase(小写)
- and vice versa
- S = "GOUguoQI"
- v = S.swapcase()
- print (v)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
gouGUOqi
40. replace(self, old, new, count=None) 替换 ***** 重要
- S = "gouguoqi"
- v = S.replace('o','n')
- print (v)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
gnugunqi
后面加参数 1, 表示替换 1 个, 2, 表示只替换 2 个, 3, 表示只替换 3 个
- S = "gouguoqi"
- v = S.replace('o','n',1)
- print (v)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
- gnuguoqi
- ####################################### 灰魔法 -- 开始 #############################
1. 索引, 下标, 获取字符串中的某一个字符, 0 为第一个字符串
- S = "beiy"
- v = S[0]
- print (v)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
b
2. 获取一个范围内的字符串叫: 切片
S = "beiy"
v = S[0:2] 这个范围是大于等于 0 小于 2
print (v)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
be
S = "beiy"
v = S[0:-1] -1 代表字符串的结尾
print (v)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
bei
3.len 获取字符串由几个字符组成
- S = "beiye"
- v = len(S)
- print (v)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
5
在 python2.7 里面中文拿到的结果就不是下面的 3 了
- S = "苗经理"
- v = len(S)
- print (v)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
3
如果想让字符串一个一个的输出该怎么写, 用我们之前学过的就是可以用 while 来写
- test = "北爷冲我来"
- index = 0
- while index <len(test):
- v = test[index]
- print (v)
- index+=1
- print ('####end####')
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
北
爷
冲
我
来
####end####
4.for 循环就更简单了
- test = "北爷冲我来"
- for n in (test):
- print (n)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
北
爷
冲
我
来
break 结束当前循环
- test = "北爷冲我来"
- for n in (test):
- print (n)
- break
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
北
continue 满足条件后不继续往下, 回到 for 开始继续循环, 然后又满足条件了, 又回去继续循环, 所以 print n 永远打印不出来, 直到循环结束也不会执行 continue 下面的 print, 也就是终止当前循环, 开始下一次循环
- test = "北爷冲我来"
- for n in (test):
- continue
- print (n)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
5.range 创建连续的数字, 也可以通过指定步长创建不连续的数字
在 python2.7 里面, range 可以直接帮我们打印出来范围内的数字, 这个就有缺点了, 比如我打印出来 1 万个数字, 它得先把一万个数字打印出来, 这个时候我们得等着了. 并且占用很多内存
在 python2.7 中有一个 xrange 跟 python 中的 range 效果是一样的, python3 中, 直接就保留了 range 这一种了, 相当于优化升级了
在 python3 里面, range 创建之后, 并不会把这些数字打印出来, 而是在什么时候调用的时候才去一个一个的打印, 比如我 for 循环调用的时候才会挨个打印, 这样就省内存了
- v = range(10)
- print (v)
- for n in (v):
- print (n)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
- range(0, 10)
range 的范围是大于等于左边的数字, 小于右边的数字, 后面可以加参数指定 "步长", 步长就是几个位置算一步(是一组), 下面的 10,31 就是指的大于等于 10, 小于 31 的里面的数字, 5 就是步长
- v = range(10,31,5)
- print (v)
- for n in (v):
- print (n)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
- range(10, 31, 5)
- 10
- 15
- 20
- 25
- 30
把数字按照倒叙排列
- S = range(10,0,-1)
- for n in S:
- print (n)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
- 10
- 9
- 8
- 7
- 6
- 5
- 4
- 3
- 2
- 1
练习: 让用户输入一堆字符串, 我们最终打印出来每个字符串的下标和源每个字符串
S = input('>>>>')
n = len(S) 获取字符串的长度
- m = range(n)
- for item in m:
- print (item,S[item])
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
- >>>>asd
- 0 a
- 1 s
- 2 d
我们在简化一下就是
- S = input('>>>>')
- for item in range(len(S)):
- print (item,S[item])
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
- >>>>ert
- 0 e
- 1 r
- 2 t
第二种写法
- a = input("请输入>>>>")
- c = 0
- for n in a:
- print (c,n)
- c+=1
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
请输入>>>>我是
0 我
1 是
7. 字符串里面的 in 操作, 判断字符是否在字符串中
- S = "abcdef"
- v = "b" in S
- print (v)
C:\python35\python3.exe D:/pyproject/day12 列表 / dict-way.py
- True
- ################### 灰魔法 ------ 结束 #################### 在其他的数据类型里面都能用
isidentifier(self) [aɪˈdentɪfaɪə(r)] 标识符
- Return True if S is a valid identifier according
- to the language definition
字母, 数字, 下划线 只要符合这 3 个条件就是标识符, 如果写上 def class 只要符合标识符的规则, 我们就认为真
- S = "_123"
- v = S.isidentifier()
- print (v)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
- True
- S = "123"
- v = S.isidentifier()
- print (v)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
- False
- S = "sdfsdf"
- v = S.isidentifier()
- print (v)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
True
expandtabs(self, tabsize=8) 这个可以做(表格对齐)
表示默认以 8 位一组为分割, 如果这 8 位里面包含了 \ t, 不够的话 \ t 就用几个空格补齐, 下面的例子就是
lp234567oiutr0987hggtsjjs
因为默认是 8 位一组, lp 占了 2 位了所以 \ t 就得用 6 个空格补全, 234567 就代表空格
Return a copy of S where all tab characters are expanded using spaces.
If tabsize is not given, a tab size of 8 characters is assumed
- S = "lp\toiutr0987hggtsjjs"
- v = S.expandtabs()
- print (v)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
lp oiutr0987hggtsjjs
因为前面正好是 8 位, 后面 \ t 自己就占 8 位, 也是 8 个空格
- S = "lpoiutr0\t987hggtsjjs"
- v = S.expandtabs()
- print (v)
lpoiutr0 987hggtsjjs
再看下面这个, 前 8 位是黄色, 后面是四位加一个 \ t 因为是 8 位一组, 所以就用 4 个空格补齐了
- S = "lpoiutr0987h\tggtsjjs"
- v = S.expandtabs()
- print (v)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
lpoiutr0987h ggtsjjs
下面我们指定一下 以 6 位为单位分割
黄色是 6 个, 绿色是 6 个, 所以后面的 \ t 自己就占 6 位
- S = "lpoiutr0987h\tggtsjjs"
- v = S.expandtabs(6)
- print (v)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
lpoiutr0987h ggtsjjs
遇到 \ t 是一组, 因为指定了 6 位一组, lp 只占 2 位, 所以 \ t 就是用四个空格补齐
- S = "lp\toiutr0987hggtsjjs"
- v = S.expandtabs(6)
- print (v)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
lp oiutr0987hggtsjjs
第一组黄色, 第二组绿色, 都是 6 位一组, 第三组 hgg 占用了 3 位, 所以 \ t 就是用 3 个空格补齐
- S = "lptoiutr0987hgg\ttsjjs"
- v = S.expandtabs(6)
- print (v)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
lptoiutr0987hgg tsjjs
用 expandtabs 这个方法做个表格
S = "username\temail\tpasswd\ngouguoqi\t564039852@qq.com\t123456\nbeiye\t564039852@qq.com\t123456\nmiaoye\t564039852@qq.com\t123456"
- v = S.expandtabs(20)
- print (v)
C:\python35\python3.exe D:/pyproject/day11 数据类型的方法 / str-way.py
- username email passwd
- gouguoqi 564039852@qq.com 123456
- beiye 564039852@qq.com 123456
- miaoye 564039852@qq.com 123456
来源: https://www.cnblogs.com/gouguoqilinux/p/9114463.html