day2-字符串

在Python中字符串本身带有很多操作,字符串的特性:不可被修改

1. 字符串的定义

>>> name = '' #空字符串
>>> name = "loutao"  #定义非空字符串
>>> name
'loutao'
>>> name[1]  #通过小标访问字符串
'o'
>>> name[2] = 's'  #字符串的值不能被修改,否则会报错
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment

2. 切片

字符串和列表,元组一样,都是可以切片的

View Code

3. 首字母大写(capitalize())

>>> name
'lou tao'
>>> name.capitalize()
'Lou tao'

4. 统计(count(sub,start=None,end=None))

sub:统计的字符,start:开始位,end: 结束位,start和end默认为空时,则表示从全部字符中统计

>>> name
'lou tao'
>>> name.capitalize()
'Lou tao'
>>> name.count('o')
2
>>> name.count('o',1,5)
1

5. center(width,fillchar),ljust(width,fillchar),rjust(width,fillchar)

如果width (字符宽度) 小于等于(<=)字符串的长度,则返回原字符串,如果大于(>)字符串,则用fillchar字符填充

Python中打印字符串时可以调用ljust(左对齐),rjust(右对齐),center(中间对齐)来输出整齐美观的字符串,使用起来非常简单,包括使用第二个参数填充(默认为空格)

>>> print('|','*'.ljust(10),'|')
| *          |
>>> print('|','*'.ljust(10,'-'),'|')
| *--------- |
>>> print('|','*'.rjust(10,'-'),'|')
| ---------* |
>>> print('|','*'.center(10,'-'),'|')
| ----*----- |
>>> for a in range(1,6):
...     print('a ='.ljust(5),repr(a).ljust(10),'b ='.ljust(5),repr(a * 2))
... 
a =   1          b =   2
a =   2          b =   4
a =   3          b =   6
a =   4          b =   8
a =   5          b =   10

6. 编码(encode)

字符串的编码与解码 ;点击详情:py编码终极版

7. endwith(suffix,start=None,end=None),startswith(prefix, start=None,end=None)

判断是否已suffix结尾,是返回True, 否返回Fales;判断是否已prefix开始,是返回True,否返回Fales

suffix: 表示字符或者字符串,start: 开始位,end: 结束位,start和end默认为空,表示从整个字符串的结尾去判断

prefix: 表示字符或者字符串,start: 开始位,end: 结束位,start和end默认为空,表示从整个字符串的开头去判断

>>> name
'lou tao'
>>> name.endswith('o') # 结尾找到"o" 字符
True
>>> name.endswith('o',1,4) # 在索引1到4之间没有找到以"o"字符结尾
False
>>> name = "lou tao"
>>> name.startswith('l') #开头找到"l" 字符
True
>>> name.startswith('lou') #开头找到"lou" 字符串
True
>>> name.startswith('lou',0,2) # 在索引0到2之间没有找到以"lou"字符串开头
False

8. find(sub,start=None,end=None)

全文查找字符或字符串sub,找到则返回其第一个字符的索引,找不到则返回-1

sub: 字符串或者字符, start:开始位,end: 结束位,start和end默认为空时,在整个字符串中查找

>>> name
'lou tao'
>>> name.find('t')
4
>>> name.find('ta')
4
>>> name.find('ta',2)
4
>>> name.find('ta',1,2)
-1

9,rfind(sub,start=None,end=None)

从左向右查找sub中第一个字符所在整个字符串中的索引值,没有找到则返回-1

>>> name
'lou tao'
>>> name.rfind('t')
4
>>> name.rfind('t',2)
4
>>> name.rfind('t',1,2)
-1

10. format()

详细信息参考:这里

format :
    >>> msg = "my name is {}, and age is {}"
    >>> msg.format("alex",22)
    'my name is alex, and age is 22'
    >>> msg = "my name is {1}, and age is {0}"
    >>> msg.format("alex",22)
    'my name is 22, and age is alex'
    >>> msg = "my name is {name}, and age is {age}"
    >>> msg.format(age=22,name="ale")
    'my name is ale, and age is 22'

11. format_map()

数据格式,以字典形式传入

   >>> msg = "my name is {name}, and age is {age}"
   >>> msg.format_map({'name':'alex','age':22})
   'my name is alex, and age is 22'

12. isalnum()

判断是否是一个阿拉伯数字和字母,中间不能有特殊字符

>>> age = '23'
>>> age.isalnum()
True
>>> age = '2.3'
>>> age.isalnum()
False
>>> age = '23ab'
>>> age.isalnum()
True
>>> age = 'ab'
>>> age.isalnum()
True

13. isalpha()

判断是否是一个纯英文字符,包含大写

>>> age = 'ab'
>>> age.isalpha()
True
>>> age = 'Ab'
>>> age.isalpha()
True
>>> age = 'Ab23'
>>> age.isalpha()
False

14. isdigit()

判断是否是一个整数

>>> a = '9'
>>> a.isdigit()
True
>>> a = '9.9'
>>> a.isdigit()
False

15. isspace()

判断是否是一个空格

>>> a = ' ab'
>>> a.isspace()
False
>>> a = ' '
>>> a.isspace()
True

16. istitle()

是否是一个标题(字符串中的每个单词的首字母大写)

>>> name = "Lou Tao"
>>> name.istitle()
True
>>> name = "Lou tao"
>>> name.istitle()
False

17. isupper()

是否是大写,注意字符串必须全部是大写才会返回True, 否则返回False

>>> name = "LOUTAO"
>>> name.isupper()
True
>>> name = "loutao"
>>> name.isupper()
False

18. islower()

是否是小写,注意字符串必须全部是小写才会返回True, 否则返回False

>>> name = "loutao"
>>> name.islower()
True
>>> name = "LOUtao"
>>> name.islower()
False

19. isidentifier()

检测一段字符串可否被当作标志符,即是否符合变量名规范

>>> b = "defefdfd_df"
>>> b.isidentifier() #检测一段字符串可否被当作标志符,即是否符合变量命名规则
True

19. join()

序列用某个字符拼接成一个字符串,注意的是,序列的元素必须是str类型

 

>>> a = ['1','2','3']
>>> '|'.join(a)
'1|2|3'
>>> a = [1,2,3]
>>> '|'.join(a)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: sequence item 0: expected str instance, int found

20. lower(),upper()

lower: 字符串中的大写字母 转换为小写字母,upper: 字符串中的小写字母转换为大写字母

>>> name = "LouTao"
>>> name.lower() #大写字母转换为小写字母
'loutao'
>>> name.upper() #小写字母转换为大写字母
'LOUTAO'

21. strip(),lstrip(),rstrip()

Python 中的strip用于去除字符串的首尾字符(默认为空格和换行符\n),同理,lstrip用于去除左边的字符,rstrip用于去除右边的字符。这三个函数都可传入一个参数,指定要去除的首尾字符。注意的是,传入的是一个字符数组,编译器去除两端所有相应字符,直到没有匹配的字符。

>>> str = "   \nloutao    \n"
>>> str.strip()
'loutao'
>>> str.rstrip()
'   \nloutao'
>>> str.lstrip()
'loutao    \n'
>>> str = "saaaay yes no yaaaass"
>>> str.strip('say')  #str依次被去除首尾在['s','a','y']数组内的字符,直到字符不在数组内。所以,输出的结果为:yes no
' yes no '
>>> str.strip('say ') #say后有空格
'es no'
>>> str.lstrip('say')
' yes no yaaaass'
>>> str.rstrip('say')
'saaaay yes no '

22. split()

分割函数,默认以空格分隔生成一个列表,如果使用其他字符分割,输入其他字符参数

>>> name = "lou tao"
>>> name.split()  #默认为空,按空格分割
['lou', 'tao']
>>> name = "lou\ntao" 
>>> name.split('\n') #以 \n分割
['lou', 'tao']

23. splitlines()

以换行分割,这个一般在windows上开发,移动到linux上执行,或者在linux上开发,移到windows上执行,因为换行在windows上是"\r\n",在linux上是"\n"

>>> name = "lou\ntao"
>>> name.splitlines()
['lou', 'tao']

24. swapcase()

把大写换成小写,把小写换成大写

>>> name = "LouTao"
>>> name.swapcase()
'lOUtAO'

25. replace(old,new[, max])

old: 旧字符串;new: 新字符串,用于替换old字符串;max可选字符串,替换不超过max次

>>> name = "Success is the sum of small efforts, repeated day in and day out"
>>> name.replace('is','was')
'Success was the sum of small efforts, repeated day in and day out'
>>> name.replace('is','was',0)  #原字符串没有改变
'Success is the sum of small efforts, repeated day in and day out'
>>> name.replace('is','was',1)
'Success was the sum of small efforts, repeated day in and day out'

26. zfill(width)

字符的长度是否大于等于(>=)width,如果比width小,则在字符串钱用0填充,如果>=width,则返回原字符串

>>> name = "loutao"
>>> len(name)
6
>>> name.zfill(10) #width 大于字符串长度
'0000loutao'
>>> name.zfill(6) #width小于等于字符串长度
'loutao'

 

posted @ 2017-12-27 22:59  Easonlou  阅读(152)  评论(0编辑  收藏  举报