Python字符串

str1 = '++123--'
str2 = ''
str3 = "     [3,4,5]     "
str4 = """
# hello
# woRld
# """
str5 = "123"

一、字符串拼接

1.使用+号连接字符串

s1 = '我'
s2 = '是'
s3 = '一个'
s4 = '好人'
s5 = s1 + s2 +s3 +s4
print(s5)
print(type(s5))
结果:
我是一个好人
<class 'str'>

2.使用,号连接字符串

s1 = '我'
s2 = '是'
s3 = '一个'
s4 = '好人'
s5 = s1,s2,s3,s4
print(s5)
print(type(s5))
结果:
('我', '是', '一个', '好人')
<class 'tuple'>

3.使用%连接字符串

print('%s%s%s%s'%('我','是','一个','好人'))
结果:我是一个好人

4.使用join函数连接字符串

list1 = ['hello','world','i','love','you']
print('王先生'.join(list1))
print('www.'       'baidu.com')

![Alt](https://img-home.csdnimg.cn/images/20220524100510.png#pic_center运行结果

二、字符串常用方法

1.大小写转换

str1 = """
# hello
# woRld
# """
print(str1.upper())    #转换字符串中所有字母为大写
print(str1.lower())    #转换为小写
print(str1.swapcase()) #对字符串进行大小字母转换
print(str1.title())    #所有单词首字母转换为大写
>>> name = 'li qin' 
>>>> name.title() 
>'Li Qin'

2.找位置 str.find()检测字符串中是否包含子字符串str,返回下标

str1 = "[3,4,5,6]"
print(str1[3])
a = str1.find('6')      #找一个字符找在字符串中的位置,6在第7位,[ 和 ,都算位置,find找不到会返回-1
b = str1.index('6')     #index找不到会报错
print(a,b)
结果:
4
7 7

如果想要知道某个字符串是否包含在列表中,可以直接使用index方法判断。
如果包含了字符串中,返回该字符串第一次出现的位置;如果不包含,就会出错。

str1 = '12336'
b = str1.index('6')
print(b)
结果:4

3.替换 str.replace(str1,str2) 把字符串中的str1替换成str2

str1 = "[3,4,5,6]"
print(str1.replace(',','|'))   #把逗号替换成|
#结果:[3|4|5|6]

4.去左右字符

**
Python strip()方法用于移除字符串首尾指定的字符串;当没有参数时,默认为空格和换行符。
**

str1 = '++++1234---'
str2 = '    123'
print(str2.strip())  #str.strip()删除字符串开头和末尾的空格
print(str1.rstrip('-'))
print(str1.lstrip('+'))
print(str1.lstrip('+').rstrip('-'))

运行结果

5.判断字符是否在字符串当中

isdigit() 如果字符串中包含数字则返回Ture,否则返回False

# print('hes' in 'hello')
False

6. 字符串取值

str3 = "     [3,4,5]     "   #[3,4,5]想取里面的345
print(str3.index(']'))  #确定右边]的值是11
print(str3.index('['))  #确定左边[的值是5
print(str3[6:11][::-1]) #所以我们要的范围是5~11,现在就是想该怎么样切片了,[::-1]倒序

例题1
只取出人名,不要逗号,打印的时候只打印人名。
做题思路

data = "刘晓庆,王晨晨,马天宇,张茯苓,柳灵儿"
print(data[::])    #想办法怎么能跳三个值去一下,跳三个取一下
while True:  #死循环
         print(data[:data.index(',')])     #data.index(',')逗号的位置是3,咋们先切一下,从头切到逗号之前
         print(data[data.index(',') + 1:]) #下一次从data.index(',')往后切,不包括这个,就+1
         break  #跳出死循环

答案


data = "刘晓庆,王晨晨,马天宇,张茯苓,柳灵儿"
while True:  #死循环
    try:
        print(data[:data.index(',')])     #data.index(',')逗号的位置是3,咋们先切一下,从头切到逗号之前
        data = data[data.index(',') + 1:] #把之前的data顶替掉,用这个值给data赋值
    except:
        print(data)
        break           #当找不到最后的逗号就结束这个循环

运行结果

7.字符串拆分、划分

data = "刘晓庆,王晨晨,马天宇,张茯苓,柳灵儿"
for i in data.split(','):
     print(i)

运行结果

8.遍历字符串

b = '12336'
for i in b:
     print(i)
 data = "刘晓庆,王晨晨,马天宇,张茯苓,柳灵儿"
 for i in data:
     print(i)

9.字符串合并

str.split()通过指定的分隔符对字符串进行切片,返回列表类型的数据,str.split() num=string.split(str))为分隔符截取字符串将字符串分割成列表
str.join(seq),以指定字符串作为分隔符,将seq中所有的元素(的字符串表示)合并为一个新的字符串

###使用join函数连接字符串

1.
list1 = ['hello','world','i','love','you']
print('王先生'.join(list1))
#结果hello王先生world王先生i王先生love王先生you
2.
data = "刘晓庆|王晨晨|马天宇|张茯苓|柳灵儿"
print(data)
d = data.split('|')
print(d)
print('-'.join(d))
print('|'.join(d))
#结果:
刘晓庆|王晨晨|马天宇|张茯苓|柳灵儿
['刘晓庆', '王晨晨', '马天宇', '张茯苓', '柳灵儿']
刘晓庆-王晨晨-马天宇-张茯苓-柳灵儿
刘晓庆|王晨晨|马天宇|张茯苓|柳灵儿
#

10.判断以什么开头

data = "刘晓庆,王晨晨,马天宇,张茯苓,柳灵儿"
 print(data.startswith('大'))
#输出结果是False

11.统计长度len()

data = "刘晓庆|王晨|柳灵儿"
print(len(data))
#10

12.编码

 strs = '中国'
 print(str)

13.查看当前字符串在ascii码表里的位置

 print(ord('a'))   #a在ascii表里面第97位
 print(chr(97))  #在ascii表里面第97位是a

 for i in range(100000):    #遍历前100000位
     print(chr(i))
# gbk中文编码
# utf8万国码
 strs = '中国'
 print(strs.encode('utf8').decode('utf8')) #utf8转的,转过去还是用utf8
 print(strs.encode('gbk').decode('gbk'))   #gbk转的,转过去还是用gbk
 print(strs.encode('gbk'))
 print(strs.encode('utf8'))

特殊

 str1 = b'\xd6\xd0\xb9'.decode('gbk','ignore')  #破坏一下再转,报错,可以写ignore忽略掉,删除残的就可以转
 print(str1)

14.字符串转义

 print('hello\nwor\'ld')
 print(r'hello\nworld')
 #结果:
 hello
 wor'ld
 hello\nworld
 #

(1.)处理字符串当中的引号两种方法

①使用不同的引号包围字符串
②对字符串内容的引号进行转义,使用\即可
s5 = "i'm a good boy"
s6 = 'i\'m a good boy'
print(s5)
print(s6)

15.字符串格式化

想让输入到里面的值可以变化,比如可以随便输入一个人的名字,查询成绩什么的,就可以随便输入.

(1)format格式化

1.
username = input('请输入你的名字')
score = float(input('请输入你的成绩'))
print('你好,{0},你的成绩是{1:.2f}'.format(username,float(score)))
结果:
请输入你的名字李白
请输入你的成绩95.89
你好,李白,你的成绩是95.89

2.
name = '李崇昂'
print("我的名字是:{}".format(name))
print('我的年龄是:{age}'.format(age = 18))
#结果:
我的名字是:李崇昂
我的年龄是:18
#

(2)%号格式化,使用%进行占位,%连接传参

%s 格式化字符串
%d 格式化整数
%f 格式化浮点数,可以指定小数点后的精度

1.
username = input('请输入你的名字')
score = float(input('请输入你的成绩'))
print('你好,%s,你的成绩是%.2f'%(username,float(score)))
结果:
请输入你的名字柳宗元
请输入你的成绩97.546
你好,柳宗元,你的成绩是97.55
2.
name = '柳宗元'
age = 18
print('我的名字是%s,我今年%d岁了'%(name,age))

#结果:我的名字是柳宗元,我今年18岁了

(3)f-string 格式化,直接在花括号中传值

1.
username = input('请输入名字')
score = float(input('请输入你的成绩'))
print(type(score))
print(f'你好,{username},你的成绩是{score:.2f}')
结果:
请输入名字梦游
请输入你的成绩102.67
<class 'float'>
你好,梦游,你的成绩是102.67

2.
name = '李白'
print(f'你的名字是{name}')
#结果:你的名字是李白

也可以使用字典类型来格式化

3.
#使用字典类型来格式化
d = {'age':18,'name':18}
print(f'年龄{d["age"]}:名字{d["name"]}')

结果:年龄18:名字18

例题2
输出对应的最大值
答案

max = 0    #假设有个最大值
max_name = ''   #等于一个空的字符串
strs = "柳宗元-1|杜甫-5|李白-3|陆游-7|王维-6"
for i in strs.split('|'):
    d = i.split('-')
    name = d[0]   #根据下标注取值['王维', '6'],0是名字,1是数字
    num = int(d[1])   #转成整数
    if num>max:
        max = num
        max_name = name
print(max,max_name)
#结果:7 陆游
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ゆきな

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

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

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

打赏作者

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

抵扣说明:

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

余额充值