美文网首页
python基础-字符串(2)

python基础-字符串(2)

作者: 0893051f5f11 | 来源:发表于2018-07-16 22:16 被阅读0次

这篇内容主要是作者对字符串进行理解总结

1. Python语言中的字符串有两大特点:

  • 字符串是不可变的。
  • 字符串是字符有序的集合。

1.1字符串的不可变性:

  • eg:将hello 变为Hello:
s='hello'
s[0] = 'H'

结果报错:TypeError: 'str' object does not support item assignment

应该运行如下:

s='hello'
# s[0] = 'H' 
s = 'H' + s[1:] 
print(s)

因为Python字符串是不可变对象,所以对字符串操作的时候会得到一个新的字符串,新的字符串会占用一块独立的内存。
所以在编写程序的时候尽量避免产生过多的中间结果。中间结果越多,程序的性能就越差。牢记字符串的不可变性。

1.2有序的集合:

字符串是有序的集合,可以通过分片和索引的方式定位与截取。对于分片操作来说,是索引操作的延伸。
需要注意,在Python中分片和索引可以应用于任何有序集合(字符串、列表和元组)。
为了代码可读性,尽量不要同时指定分片的开始、结束、步长,也不要使用负数的。

2.字符串函数

2.1 in 判断子字符串是否存在

>>> s='hello'
>>> 's' in s
False
>>> 'o' in s
True
>>> 'he' in s
True

2.2 大小写相关转化方法

>>> s='Hello python!'
>>> s.upper()      #转换为大写
'HELLO PYTHON!'
>>> s.lower()    #转换为小写 
'hello python!'
>>> s.capitalize()  #转换为首字母大写
'Hello python!'
>>> s.swapcase()    #将大小写交换
'hELLO PYTHON!'

2.3 startswith和endswith

分别用来判断,参数是否存在于字符串的前缀或者后缀。

  • eg.找出当前目录的Python文件:
  1. 在某个目录下打开cmd,输入idle:
    C:\Users******> idle

2.引用os包,遍历所有文件,并判断出Python文件:

>>> import os
>>> [ item for item in os.listdir() if item.endswith('.py')]
['click_package.py', 'sys.argv.py']

前缀和后缀的判断常常用于查找相同文件类型,以及数据库日志中具有相同前缀但以不同日期结尾的文件。

2.4 find 查找类函数

>>> s = 'Hello python!'
>>> s.find('l')
2       # 第一个l出现的位置
>>> s.find('o',5)    # 指定从顺序5以后的字符中查找0
10    # 返回0的位置
>>> s.find('haha')
-1     # 查找为空时,返回-1,表示一次情况

注意:
find查找与in判断的区别:
find查找不到时,返回-1;in判断结果为Ture or False

2.5 字符串的操作

由于字符串的不可变性,以下函数作用后,生成新的对象,而不是对原来的对象修改,需要重新指定变量。

2.5.1 join 用于连接字符串或者列表

>>> '+'.join('Hello python!')
'H+e+l+l+o+ +p+y+t+h+o+n+!'

join函数对前面的分隔符没有要求,可以使用空字符。任何字符都可以插入到字符串中。
join函数中传入参数不仅仅限于字符串,任何可迭代的对象都可以作为参数传入(列表元组等)。最终生成巨大的字符串。
join函数用处很广,涉及类型转换及文件名拼接等都会用到它。

>>> '..'.join(('hello','python'))    #元组作为参数传入
'hello..python'   

2.5.2 split 用于拆分字符串,拆分后生成列表

>>> s = 'sys.argv.py'
>>> s.split('.')          #以.为分隔符进行拆分
['sys', 'argv', 'py']

如果不传参数,默认按空白字符进行拆分。

2.5.3 strip 用于去掉字符串两边的空白符

>>> s = ' \tHello, \tWorld \n'
>>> s.strip()
'Hello, \tWorld'      # 中间的空白字符及空格不受影响

只能从两边开始去除字符,去除时,并不是按照参数顺序

>>> a=s.strip()
>>> a.strip('Hold')
'ello, \tWor'              #字符o,不位于字符串两边,所以无法去除

2.6 字符串格式化

这是一种更高级的方法来组合字符串。
一般有两种方法:%表达式和format函数

2.6.1% 表达式

用于格式化字符串操作,控制字符串的呈现格式

2.6.1.1 浮点数

>>> '%f' % 15.26546546
'15.265465'  # %f 保留小数点后面六位有效数字
>>> ' %(price)f' % {'price': 15.26546546}
' 15.265465'  # (price)这是指定引用名称
>>> '价格是:%(price)f' % {'price': 15.26546546}
'价格是:15.265465'  # 可以直接添加字符串,形成新的语句
>>> '价格是:%(price).2f' % {'price': 15.26546546}
'价格是:15.27'     #.2f 表示保留两位小数

2.6.1.2 整数

>>> '%d' % 20
'20'       # %d 输出十进制
>>> '%o' % 20
'24'       # %o 输出八进制
>>> '%x' % 20
'14'      # %x 输出十六进制

2.6.1.2 字符串

>>> '%s' % 'hello world'
'hello world'          # %s 表示取字符串
>>> '%.5s' % 'hello world'
'hello'                 # %.5s 表示截取5位字符串

2.6.2 format函数

它通过{}和:来代替%

2.6.2.1 定位

>>> 'welcome to {} {} _python'.format('hello','world')
'welcome to hello world _python'  
# {} 依次传递参数至{}
>>> 'welcome to {1} {0} _python'.format('hello','world')
'welcome to world hello _python'  
# {} 按下标的方式传递
>>> 'welcome to {1} {0} _python {1} {1}'.format('hello','world')
'welcome to world hello _python world world'
# {} 一个参数可以多次使用

2.6.2.2 格式

>>> '{:.2f}'.format(3.1415926)
'3.14'
>>> '{1:^10.2f}'.format(3.1415926,5.555555)
'   5.56   '
# ^表示居中;10代表字符长度;.2f表示双精度浮点型数字
微信关注.png

相关文章

网友评论

      本文标题:python基础-字符串(2)

      本文链接:https://www.haomeiwen.com/subject/vzfjuftx.html