首页 > 编程语言 >学习python中的字符串操作

学习python中的字符串操作

时间:2023-02-12 16:32:27浏览次数:39  
标签:学习 python --- print 字符串 path ------ id

字符串

字符串的存储地址原理

​ 在python中有一个字符串保留区,当中存放了声明的字符串,每一个字符串对应一个地址,变量名指向对应的地址, 只要字符串相同,声明内容相同的字符串变量,他都指向同一个地址。

'''
例:
s1 = 'hello'
s2 = s1
s3 = 'hello'
s4 = 'hello1'
--->    其中 s1、s2、s3 这三个变量的地址都相同
---->   具体解释: s2 = s1 的实质就是将 s1的地址赋给s2
                 s3 = 'hello' 因为在字符串保留区中已经存在了 hello 这个字符串,所以为了节省内存,就直接使用原来字符串的地址。
                 s4 = 'hello1' 这个字符串因为还未出现在字符串保留区,所以它会有一个自己的地址,而不是用’老地址‘
'''
#代码
s1 = 'hello'
s2 = s1
s3 = 'hello'
s4 = 'hello1'

print(id(s1))
print(id(s2))
print(id(s3))
print(id(s4))

字符串 截取

索引概念:index

​ 一个字符串,每一个字符都对应了一个编号。

例:      A   B   C   D   E   F   G   H   I
index:   0   1   2   3   4   5   6   7   8      --->这是其中一种编号方式从左自右,从0开始
index:  -9  -8  -7  -6  -5  -4  -3  -2  -1      --->这是另一种编号方式从右自左,从-1开始

字符串索引机制

​ 1、 0~len(s)-1 ​ 2、 -len(s)~ -1 ​ 虽然两种编号方式不同,但是在切片时,都是从左自右的书写,并且两种编号方式可以混合用

例:
#截取(结果为某一字符)
s1 = 'ABCDEFG'

print(s1[4])    ------> 结果:E 
print(s1[0])    ------> 结果:A  

print(s1[-1])   ------> 结果:G 

切片(从长字符串得到一个小字符串)

print(s[1:4])   ------> 结果:BCD      (规则:左闭右开,左取右不取)
print(s[0:5])   ------> 结果:ABCDE
print(s[:5])    ------> 结果:ABCDE   (从0到index=4,包左不包右) 

print(s[-3:-1]) ------> 结果:EF   (还是先写左再写右)
print(s[-3:7]) ------> 结果:EFG   (两种编号可以混合使用)
print(s[-3:]) ------> 结果:EFG   (从-3开始到结尾)

print(s[:]) ------> 结果:ABCDEFG  (相当于    print(s),且两个变量的地址一样)
    x = s[:]
    print(x)
    print(s)    --->结果相同
    
    print(id(x))
    print(id(s))    --->结果相同
格式变形:

​ 字符串变量[start: end :step] 默认是一个一个取这个元素,加入步长后,每次取 当前位置+步长(step)

print(s[:-1:2]) ------> 结果:ACE
print(s[1::2])  ------> 结果: BDF
print(s[::4])   ------> 结果: AE

step:
1.步长
2.方向    step    正数  从左向右
         step   负数  从右向左

print(s[::-1])   ------> 结果: GFEDCBA    (默认从头开始,从右段开始,方向看步长的正负)
print(s[::])   ------> 结果: ABCDEFG   (默认从头开始,从左段开始)

print(s[0:6:-2])    ------> 错误示范
                    原因:它从0开始,步数为负,方向向左,则无法到index=6
print(s[6:0:-2])    ------> 结果:GECA

字符串的常见操作

取长度-len

path = 'https: // www.bilibili.com / video / BV1R7411F7JV?spm_id_from = 333.999'
print(len(path))  # --->结果:71

查找内容-find,index,rfind,rindex

  • find:从左向右查找,只要遇到一个符合要求的,则返回位置,如果没有找到符合要求的则返回-1
  • rfind:right find。与find对应,从右向左查找,只要遇到一个符合要求的,则返回位置,如果没有找到符合要求的则返回-1
  • index与find的区别:两种在操作上没有区别,但是index如果找不到会报错。
  • rindex与index对应。
path = 'https: // www.bilibili.com / video / BV1R7411F7JV?spm_id_from = 333.999'
# 例-find
i = path.find('w')
j = path.find('m')
print(path[i:j + 1])  # --->结果:www.bilibili.com

# 除了单个字符的查找,字符串也可以
i = path.find('bilibili')
print(i)  # 多个字符时它会返回字符串的第一个字符的位置
# --->结果:14
print(path[i:])  # --->结果:bilibili.com / video / BV1R7411F7JV?spm_id_from = 333.999

# 例-rfind
a = path.rfind('i')
print(path[a:])  # --->结果:id_from = 333.999

# 例-index
# b = path.index('$')
# print(b)

# rindex不做演示

判断:startswith,endswith,isalpha,isdigit,isalnum,isspace

  • startswith:判断字符串开头与要求字符是否相同
  • endswith:判断字符串结尾与要求是否相同
  • is和has:两者开头的函数都是用于判断的,is表示是否相同;has表示是否存在。都返回布尔值
  • isalpha:判断字符串是否都是字母
  • isdigit:判断字符串是否都是数字
  • isalnum:判断字符串是否含有字母和数字
  • isspace:判断字符串是否只有空格
  • isupper:判断字符串是否都是大写字母
  • islower:判断字符串是否都是小写字母

统计字符串中的某字符的个数-count

path = 'https: // www.bilibili.com / video / BV1R7411F7JV?spm_id_from = 333.999'
print(path.count('b'))  # --->结果:2

替换内容-replace

path = 'https: // www.bilibili.com / video / BV1R7411F7JV?spm_id_from = 333.999'
print(path.replace('bilibili', 'dilidili'))  # replace('被替换内容',‘添加进去的内容’,个数),

切割字符串:split,rsplit,partition,rpartition

​ 切割字符串之后,切割的内容都会被放在列表中。

  • split:自左向右进行分割,遇到目标就进行分割,默认对所有目标前后进行分割。split分割会将分割符去掉,可以添加分割次数,1就分 一次。
  • rsplit:自右向左进行分割,与split对应。
  • splitlines:按行分割,也可以指定分割次数。
  • partition:与split区别,会联通分割符分成三部分:分割符前,分割符,分割符后。
  • rpartition:自右向左进行分割,与partition对应。
path = 'https: // www.bilibili.com / video / BV1R7411F7JV?spm_id_from = 333.999'
kuai = '''
aaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbb
cccccccccccccccccc
dddddddddddddddddd
'''
print(path.split('/', 1))  # --->结果:['https: ', '/ www.bilibili.com / video / BV1R7411F7JV?spm_id_from = 333.999']
print(path.rsplit('/', 1))  # --->结果:['https: // www.bilibili.com / video ', ' BV1R7411F7JV?spm_id_from = 333.999']
print(kuai.splitlines())  # --->结果:['', 'aaaaaaaaaaaaaaaaaa', 'bbbbbbbbbbbbbbbbbb', 'cccccccccccccccccc', 'dddddddddddddddddd']
print(path.partition('/'))  # --->结果:('https: ', '/', '/ www.bilibili.com / video / BV1R7411F7JV?spm_id_from = 333.999')
print(
    path.rpartition('/'))  # --->结果:('https: // www.bilibili.com / video ', '/', ' BV1R7411F7JV?spm_id_from = 333.999')

修改大小写:capitalize,title,upper,lower

  • capitalize:把字符串中的第一个首字母大写
  • title:把每个单词的首字母大写
  • upper:把每个字母都大写
  • lower:把每个单词都小写
KPL = 'hello World'
print(KPL.capitalize())  # --->结果: Hello world
print(KPL.title())  # --->结果:Hello World
print(KPL.upper())  # --->结果: HELLO WORLD
print(KPL.lower())  # --->结果:hello world

空格处理:添空格:ljust,rjust,center;去空格:lstrip,rstrip,strip

  • ljust:右对齐,把字符串放右边,添加的空格放左边
  • rjust:左对齐,把字符串放左边,添加的空格放右边
  • conter:剧中对齐,把字符串放自己,添加的空格分别放到两边
  • lstrip:去左空格
  • rstrip:去右空格
  • strip:首尾都去空格
KK = 'wwwbilibili com'
print(KK.ljust(30))
print(KK.rjust(30))
KK = KK.center(30)
print(KK)
print(KK.lstrip())
print(KK.rstrip())
print(KK.strip())

字符串拼接:join(列表的拼接:['','','','','',''].join)

字符串格式化

  1. 用格式化符号进行格式化
  2. 用format格式化:分为数字格式化和关键字格式化
name = 'orange'
age = 18
# 格式化符号
print("my name is %s. I'm %d years odl" % (name, age))
#format格式化
print("my name is {}. I'm {} years odl".format(name, age))
print("my name is {0}. I'm {1} years odl.I want to eat {0}".format(name, age))
print("my name is {name}. I'm {age} years odl".format(name='orange', age=18))
#--->结果:my name is orange. I'm 18 years odl
#--->结果:my name is orange. I'm 18 years odl.I want to eat orange

标签:学习,python,---,print,字符串,path,------,id
From: https://blog.51cto.com/u_15954070/6052106

相关文章

  • Linux学习-day9
    第六章存储结构与管理硬盘6.1一切从“/”开始Linux系统中一切都是文件​Linux系统中的一切文件都是从“根”目录(/)开始的,并按照文件系统层次标准(FHS)采用倒树状结构来存放......
  • C语言学习:读写一行字符
    1#include<stdio.h>2#include<io_utils.h>3#include<errno.h>4#include<string.h>56voidReadFile1(){7FILE*file=fopen("CMakeLists.txt"......
  • C语言学习:复制文件
     1#include<stdio.h>2#include<io_utils.h>3#include<errno.h>4#include<string.h>56#defineCOPY_SUCCESS07#defineCOPY_ILLEGAL_ARGUMENT......
  • python&&matlab
    绘制折线图importmatplotlib.pyplotaspltsplts.figure(figsize=[10,5],dpi=80)#绘制一周的天气的变化plts.plot([1,2,3,4,5,6,7],[12,14,8,7,3,19,4])plts.show()......
  • C语言学习笔记(四): 循环结构程序设计
    while语句定义While语句是C语言中的循环语句,它按条件循环执行语句,直到条件不满足为止语法格式如下:while(condition){//循环体内容;}使用实例求1+2+3+…+100......
  • MarkDown学习
    MarkDown学习标题三级标题四级标题字体Hello,World!Hello,World!Hello,World!Hello,World!引用信息是用来消除随机不确定性的东西分割线图片超链接点......
  • C语言学习笔记(三): 选择结构程序设计
    if语句if(){}if(a=1){printf("hehe");}//单独一个ifif(){}else{}inta=1,b=2; if(a==b){ printf("haha");//ifelse } else { printf("hehe......
  • C语言学习: 文件流的缓冲
    没有缓冲有了缓冲  创建file变量时,传入的参数: 可以用fflush,清空缓冲区,让缓冲区内存的数据立刻打印出来。1#include<stdio.h>2#include<io_utils.h>......
  • Python网络爬虫与数据挖掘——复习笔记
    目录\(\ttrequests\)库爬取页面\(\ttrequests\)库爬取搜索引擎\(\ttrequests\)库爬取网络图片\(\ttrequests\)库爬取页面importrequests#引入库url="...........
  • C语言填空:回文字符串
    #include<stdio.h>//输入一个字符串(20个字符以内),判断其是否是回文字符串(回文字符串是指正反一样的字符串)。【1】main(){chara[21];intb,【2】,len;......