python基础-字符串(2)

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

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

推荐阅读更多精彩内容

  • 〇、前言 本文共108张图,流量党请慎重! 历时1个半月,我把自己学习Python基础知识的框架详细梳理了一遍。 ...
    Raxxie阅读 18,959评论 17 410
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,746评论 0 10
  • (一) 小恩,今天你137天,我跟你讲件特别有意思的事情,昨儿,你的爸爸在厨房叮咣的炸油...
    卷一一阅读 504评论 0 3