Python 基础--字符串操作

本文介绍了Python中的f表达式用于简化输出,print的结束符定制,以及如何生成随机数。还详细讲解了字符串的多种操作,包括切片、查找、替换、分割、排序以及各种字符串处理方法,如capitalize、title、upper、lower等。
摘要由CSDN通过智能技术生成

1. f 表达式

简介:
Python中的f表达式是用来减少输出语句的长度,并用来提高语句效率

语法格式:
f’{表达式}’

代码示范:

# f 格式化字符串,f代表format, 和%s是一样的功能,但是它很简洁
name = 'Asia'
age = 18
print("我叫%s,明年我就%d了" % (name,age+1))
print(f"我叫{name},明年我就{age+1}了")

2. print 结束符

简介:
默认在python中,print是以\n 结尾,即两个print语句输出结果之间是以换行作为分隔符, 但是有些情况下,我们需要将其换成指定的分隔符,如‘ ’ 或者\t.

语法格式:
print (‘打印的内容’, end=‘分隔符’);

代码示范:

print("Hello",end='\n')
print("World")
print('----'*4)
print("Hello",end=' ')
print("World")

3. 随机数

随机生成整数等,通过引入random模块,调用其中的randint 等方法。
语法

random.randint(起始值,结束值) #包括起始值和结束值

示例

import random
n = random.randint(1,10);
print(n);

猜拳游戏

import random
p=int(input("请出拳:0--石头 1--剪刀  2--布\n"))
# 定义字典,用来存储键值对对应关系
t={0:'石头',1:'剪刀',2:'布'}
c=random.randint(0,2) #结果包括 0 和 2
# python 没有switch
if(p==0):
    if (c==0):
        print(f"你出的是{t[p]},电脑出的是{t[c]}."+"平局")
    elif (c==1):
        print(f"你出的是{t[p]},电脑出的是{t[c]}."+"你赢了")
    else:
        print(f"你出的是{t[p]},电脑出的是{t[c]}."+"你输了")
elif(p==1):
    if(c==0):
        print(f"你出的是{t[p]},电脑出的是{t[c]}."+"你输了")
    elif(c==1):
        print(f"你出的是{t[p]},电脑出的是{t[c]}."+"平局")
    elif(c==2):
        print(f"你出的是{t[p]},电脑出的是{t[c]}."+"你赢了")
else:
    if(c==0):
        print(f"你出的是{t[p]},电脑出的是{t[c]}."+"你赢了")
    elif(c==1):
        print(f"你出的是{t[p]},电脑出的是{t[c]}."+"你输了")
    elif(c==2):
        print(f"你出的是{t[p]},电脑出的是{t[c]}."+"平局")

4. 字符串操作

1. 切片

简介
字符串切片是用来获取字符串的一部分数据。因为单纯靠数组获取,只能获取到某一个下标对应的值,所以出现了切片的概念,即显示一小段的字符串。

语法
切片是用来获取字符串中的一部分数据

  1. str[开始下标: 结束下标: 步长]
  2. 左闭右开,步长默认为1
  3. 开始下标、结束下标、步长均可以为负数
  4. 步长为-1 表示倒序排列
  5. 如果开始结束下标的方向和步长的方向相反,则输出为空

代码示范

str = '0123456789'
print(str[2:8:1]) # 234567
print(str[2:8]) # 234567
print(str[2:8:-1]) # 输出为空,下标2-8 是从左到右,而步长-1 是从右到左,所以输出为空
print(str[2:8:2]) # 246
print(str[-4:-1:2]) # 68

2. 查找

1). find():

find(需要查找的字符串, 开始查找的下标, 结束查找的下标) , 返回找到的下标
如果不存在,则返回-1

2). index()

index(需要查找的字符串, 开始查找的下标, 结束查找的下标) ,返回找到的下标
如果不存在,报错

示例:

str = 'hello world, stay hard, stay foolish'
print(str.find('stay')) # 13
print(str.find('sty')) # -1
print(str.index('stay')) # 13
print(str.index('sty')) # 'ValueError: substring not found'

3. 字符串操作–修改

字符串属于不可变类型,即使是修改,并不能改变原有字符串。

1)replace() :
  1. 简介: 替换。 将字符串按指定的字符进行替换,并返回一个新字符串,原有的字符串不变
  2. 语法: str.replace(‘原有字符串’,‘新字符串’,替换次数)
  3. 示例:
str='apple and orange and pear'
# 需求:将所有的and 改为 ‘和’
# replace 最后一个参数可以不写,默认是所有。 返回一个新字符串,原有字符串不变
new_str = str.replace('and','和')
print(str) #apple and orange and pear
print(new_str) #apple 和 orange 和 pear
str='apple and orange and pear'
# 需求:将第一个and 改为 ‘和’
# replace 最后一个参数可以不写,默认是所有。 返回一个新字符串,原有字符串不变
new_str = str.replace('and','和',1)
print(str)
print(new_str)
2)split():
  1. 简介:分割字符串。 将字符串按照指定的分隔符及部分数进行切割,并以列表形式返回,格式是list
  2. 语法:
    str.split(‘分割符’, num) , 返回num+1 个部分,并存在列表中。其中分隔符不会返回。
  3. 示例:
str='apple and orange and pear'
lst=str.split(' and ')
print(lst) # ['apple', 'orange', 'pear']
str='apple and orange and pear'
lst=str.split(' and ',1)
print(lst) # ['apple', 'orange and pear'], 返回num+1 个元素
3)sorted():
  1. sort 与 sorted 区别:
    sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。
    list 的 sort 方法返回的是对已经存在的列表进行操作,无返回值,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。
  2. 列表的sort() 方法:
lst = ['TOM','Lily','Amy']
print(lst.sort(),lst) # None ['Amy', 'Lily', 'TOM']

列表的sort() 方法,返回值为None,因为是对列表本身操作,所以,列表本身是被修改了的

  1. 内建函数sorted() 方法:
lst = ['TOM','Lily','Amy']
print(sorted(lst),lst) # ['Amy', 'Lily', 'TOM'] ['TOM', 'Lily', 'Amy']

内建函数sorted() 方法,不改变列表本身的顺序,且返回一个新列表。 调用方法sorted(列表名)

  1. 字符串的sorted()调用示例:
arr = 'hello world'
arr1 = sorted(arr)
print(arr1) # [' ', 'd', 'e', 'h', 'l', 'l', 'l', 'o', 'o', 'r', 'w']
print("".join(arr1)) # dehllloorw
4) join():
  1. 简介: 合并列表里的字符串数据为一个大字符串
  2. 语法:“连接的字符”.join(列表名)
  3. 示例:将[‘a’,‘b’,‘c’] 变成‘A+B+C’
lst1 = ['a','b','c']
# 将lst1里的字符转成相应的大写,并用加号连接
str1='+'.join(lst1).upper()
print(str1) #A+B+C

示例2: 将“Hello World” 按照ascii 码排序后,再连接输出成“HWdellloor”。

str = 'HelloWorld'
print(sorted(str)) # ['H', 'W', 'd', 'e', 'l', 'l', 'l', 'o', 'o', 'r']
print("".join(sorted(str))) # HWdellloor
4)capitalize():

语句第一个单词的首字母大写, 同样,不改变本身的大小写

5)title():

语句每个单词的首字母都大写

6)upper():

全大写

7)lower()

全小写

str = 'hello world , stay hard, stay foolish'
str1 = str.capitalize();
print(str1) #Hello world , stay hard, stay foolish
print(str) #hello world , stay hard, stay foolish
str2=str.title();
print(str2) #Hello World , Stay Hard, Stay Foolish
print(str)  #hello world , stay hard, stay foolish
str3=str.upper();
print(str3) #HELLO WORLD , STAY HARD, STAY FOOLISH
print(str)  #hello world , stay hard, stay foolish
8) lstrip()、rstrip()、strip()
  1. 简介:
    lstrip() 删除字符串左边的空白
    rstrip() 删除字符串右边的空白
    strip() 删除字符串两边的空白
    2. 示例:
str = '    Hello world   '
str1 = str.lstrip()
print(str) # '    Hello world   '
print(str1) # 'Hello world   '
str = '    Hello world   '
str1 = str.rstrip()
print(str) # '    Hello world   '
print(str1) # '    Hello world'
str = '    Hello world   '
str1 = str.strip()
print(str) # '    Hello world   '
print(str1) # 'Hello world'
9) ljust() 、rjust()、center()
  1. 简介:
    ljust() : 左对齐。包括str,一共有num个字符,其中,不足的部分填充’.’
    str.ljust(num,‘填充字符’)
    rjust(): 右对齐
    str.rjust(num,‘填充字符’)
    center(): 中间对齐
    str.center(num,‘填充字符’)

  2. 示例:

str = 'hello'
# ljust() 里面一共是10个字符,字符串靠左书写,剩余位置用. 填充
str1 = str.ljust(10,'.'); 
print(str1) # 'hello.....'
str2 = str.rjust(10,'.');
print(str2) # '.....hello'
str3 = str.center(10,'.');
print(str3) # '..hello...'
10)ord(字符):

ord(字符)是将某一个字符转为ASCii码值

例:两个字符串是可以比较大小的,请用ord函数比较各个字符的ascii码值大小。

str1 = 'hello'
str2 = 'hi'
print([ord(i)for i in str1]) # [104, 101, 108, 108, 111]
print([ord(j)for j in str2]) # [104, 105]
print([ord(i)for i in str1]>[ord(j)for j in str2]) # False

其实,直接使用str1> str2 也是可以判断的。

4. 字符串操作–判断:

1) startswith(), endswith()
  1. 简介: 返回true 或 false
  2. startswith(): 判断字符串是否以某个字串开头
  3. 语法: str.startswith(子串, 开始位置下标, 结束位置下标), 不写下标,表示整个字符串的长度
str = 'hello world, stay hard, stay foolish'
# 整个字符串是否以hello 开头
print(str.startswith('hello')) # True
# 从第十位开始,至第20位结束[10,20],是否以hello 开头?
print(str.startswith('hello',10,20)) # Flase

str1='0123456789'
print(str1.endswith('9')) # True
print(str1.endswith('4',0,5)) # True
2) isalpha() , isdigit(), isalnum(), isspace()

isalpha(): 判断是否全是字母组成 (如果包括空格,则返回False)
isdigit(): 判断是否全是数字组成
isalnum(): 判断是否至少一个字符, 且由字母或数字组成
isspace(0 : 判断是否只包含空白,如果是,则返回True

str = 'hello world'
print(str.isalpha()) # False
str = 'hello'
print(str.isalpha()) # True
str ='01234'
print(str.isdigit()) # True
str='1234AGF'
print(str.isalnum()) # True
str=''
print(str.isspace()) # False
str = '   '
print(str.isspace()) # True
str = 'Hello world'
print(str.isspace()) # False

5. 字符串删除:

del() 是公共方法,仅支持直接删除字符串,不支持指定元素删除

s = 'Hello world'
del(s)
print(s) # NameError: name 's' is not defined

不支持指定元素删除,否则会报错

s = 'Hello world'
del(s[0]) # TypeError: 'str' object doesn't support item deletion
print(s)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AsiaFT.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值