字符串

引号内的任何数据,必须使用单引号、双引号括起来

str1 = 'www.woodprogramming.com'
str2 = "wood编程"

print(str1)
print(str2)

如果字符串内容本身包含引号,此时就需要进行特殊处理
(1)巧用不同引号。假如字符串内容中包含单引号,则可用双引号将字符串括起来

str3 = 'I'm a coder'
str3 = "I'm a coder"

(2)转义字符。使用反斜线(\)将字符串中的特殊字符进行转义。

str5 = '"we are scared,Let\'s hide in the shade",says the bird'

字符串内容较长,也可用转义字符(\)把一个字符串写成两行。


字符串常用符号

取值顺序:

2种取值顺序:

从左到右索引默认0开始的,最大范围是字符串长度少1

从右到左索引默认-1开始的,最大范围是字符串开头

基础学习笔记:3 python字符串_取值


+:字符串拼接

(1)两个数值型,表示加法;(2)字符串和数值型,表示拼接,则将数值型强制转换成字符串使用函数str

num_str1= 5 + 6
print(num_str1)

str1="H"
str2="ello"
print(str2 + str1)

s1="hello"
p = 99
print(s1 + str(p))

基础学习笔记:3 python字符串_取值_02

*:字符串复制

str1='hello'
print(str1*3)

基础学习笔记:3 python字符串_取值_03

[]: 字符串切片

  • 结果为空值;例如:str1[10:]---------->返回空值;
  • 超过字符串最大索引,会抛出异常(索引越界)
  • 语法:[初始索引:结束索引:间隔的值]
  • 注意:
  • 1.字符串的索引是从0开始;获取字符串中某个字符可通过索引进行获取;
  • 2.截取的切片是左闭右开区间;
  • 3.不声明初始索引表示默认从0截取;不声明结束索引则表示截取字符串末尾
  • 4.如果间隔值是负数,则表示先将字符串进行反转后间隔取值;字符串的反转
str1="hello"
print(str1[1])
print(str1[2:])
print(str1[:2])
print(str1[:3:3])
print(str1[1:4:2])
print(str1[-4:-2])
print(str1[::-1])

基础学习笔记:3 python字符串_取值_04

思考题:str1="hello",实现切片操作,如果切片的初始索引超过字符串的最大索引值的话则结果是?


字符串的常用操作方法

3.1 数据清洗

a=" hello world "
print(a)
print(a.strip())  #去除首尾空格
print(a.lstrip())  #去除首空格
print(a.rstrip()) #去除尾空格
print(a.replace(' ',''))  #删除空格,replace(old,new,count),count参数表示的是可选参数,不声明则表示将所有的旧字符串全部替换;声明表示替换的次数

基础学习笔记:3 python字符串_取值_05

3.2 字符串的类型判断

#字符串类型判断
s="Hello 2021 World "  ##False
print(s.isalnum())  #判断所有字符都是数字或者字母
print(s.isalpha())  #判断所有字符都是字母
print(s.isdigit())  #判断所有字符都是数字
print(s.islower())  #判断所有字符都是小写
print(s.isupper())  #判断所有字符都是大写
print(s.istitle()) #判断所有字符都是空白字符

基础学习笔记:3 python字符串_字符串_06

3.3 字符串类型的转换

s="hEllo  wOrld "
print(s.capitalize()) #首字母大写,其余全部小写
print(s.upper()) #全转换成大写
print(s.lower()) #全转换成小写
print(s.title()) #标题首字大写

基础学习笔记:3 python字符串_字符串_07

3.4 判断字符串的开头的和结尾

#判断字符串的开头的和结尾
s="hello  world "
print(s.startswith("hel")) #判断是否以目标字符开头
print(s.startswith("^ld")) #判断是否不以目标字符开头
print(s.endswith("ld "))  #判断是否以目标字符结尾

基础学习笔记:3 python字符串_取值_08

#判断文件的类型
name="file.txt"
if name.endswith(".doc"):
    print(f"{name}是doc类型的文件")
elif name.endswith(".txt"):
    print(f"{name}是txt类型的文件")
else:
    print(f"{name}是其他类型的文件")

基础学习笔记:3 python字符串_字符串_09

3.5 字符串位置的调整

a="hello world"
print(a.center(20,"*"))
print(a.ljust(20,"*"))
print(a.rjust(20,"*"))

基础学习笔记:3 python字符串_转义_10

3.6 字符串的搜索和统计

##find():如果找到子串, 则返回子串开始的索引位置。 否则返回-1
a="hello world abcab"
print(a.find("llo"))
print(a.find("le"))

##count():返回字串出现的次数
print(a.count("ab"))
print(a.count("le"))

基础学习笔记:3 python字符串_字符串_11

##index():如果找到子串,则返回子串开始的索引位置。否则报错(抛出异常)
print(a.index("llo"))

基础学习笔记:3 python字符串_转义_12

##index()的使用
print(a.index("le"))

基础学习笔记:3 python字符串_取值_13

3.7 字符串的分离和拼接

(1)字符串的分离

split() 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则分隔 num+1 个子字符串

语法: s.split(str="", num=string.count(str))

## str -- 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等

## num -- 分割次数。默认为 -1, 即分隔所有

a="hello world abcab"
print(a.split(" "))
print(a.split(" ",1))
print(a.split(" ",2))

基础学习笔记:3 python字符串_取值_14

(2)字符串的拼接

join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串

“连接符”.join(列表或元组或字符串或字典)

返回的是一个使用连接符进行拼接的字符串

如果对象是列表,元组,就是以一个下标元素为单位进行拼接

如果对象是字典,就是以一个键为单位进行拼接

如果对象是字符串,就是一个单词元素为单位进行拼接

##列表
a=['hello', 'world', 'abcab']
print("**".join(a))

##字典
b={'a1':123,'a2':456,'a3':789}
print("*".join(b))

##字符串
c="hello"
print("*".join(c))

基础学习笔记:3 python字符串_字符串_15

4 随机生成数字和字母

4.1 随机生成数字-Random模块

import random
print(random.random())##随机输出[0,1]的浮点数
print(random.randint(0,9)) ##随机输出[0,9]之间的整数
print(random.uniform(2,5)) ##随机输出[2,5]之间的浮点数
print(random.choice("12345678")) ##随机输出字符串中的单个字符
print(random.choice([1,4,5,6]))  ##输出列表中的随机项
print(random.choice((1,2,6))) ##输出元组中的随即项

print(random.sample('1233',3)) #多用于截取列表的指定长度的随机数,但是不会改变列表本身的排序
print(random.sample([1,2,5,7],3))

基础学习笔记:3 python字符串_转义_16

4.2 随机生成字符-String模块

import string

print(string.digits) #生成所有数字0-9
print(string.ascii_letters)  #生成所有字母从a-z和A-Z
print(string.ascii_lowercase) #生成小写字母:a-z
print(string.ascii_uppercase) #生成大写字母:A-Z

4.3 随机生成数字和字母的组合

import random,string
print(random.sample(string.ascii_letters,4))
print("".join(random.sample(string.ascii_letters,4)))
print("".join(random.sample(string.digits,2))+"".join(random.sample(string.ascii_letters,2)))

基础学习笔记:3 python字符串_字符串_17

生成十个验证码包含两个数字两个字母

#生成十个验证码包含两个数字两个字母
import random,string
for i in range(10):
    print("".join((random.sample(string.digits,2))+(random.sample(string.ascii_letters,2))))
    #print("".join(random.sample(string.ascii_letters, 2)) + "".join(random.sample(string.digits, 2)))

5 测试题

(1)小学生计算能力测试(10以内的运算)

设计用来实现帮助小学生进行算术运算练习。功能: 提供基本算术运算(加减乘)的题目,每道题中的操作数是随机产生的, 练习者根据显示的题目输入自己的答案,程序自动判断输入的答案是否正确 并显示出相应的信息。最后显示正确率。

import random,string
count=0
for i in range(10):
    num1=random.randint(0,9)
    num2=random.randint(0,9)
    symbol=random.choice('+-*') ##随机生成运算符号
    print(f"{num1}{symbol}{num2}=?") ##打印题目
    right=eval(f"{num1} {symbol} {num2}")  ##正确的结果
    answer=int(input("请输入答案:"))
    if answer==right: ##判断结果是否正确
        print("正确")
        count+=1
    else:
        print("错误")

print("共答对%d道题,正确率是%.2f%%"  %(count,count/10*100))

(2)回文串判断

给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,将空字符串定义为有效的回文串。

import string
a='A man, a plan, a canal: Panama'
for i in a:
    if i not in string.ascii_letters:
         a=a.replace(i,"")
    else:
        continue
print("true" if a[:].lower()==a[::-1].lower() else  "false")
1

(3)编写一个函数来验证输入的字符串是否是有效的 IPv4

IPv4 地址由十进制数和点来表示,每个地址包含4个十进制数,其范围为 0 - 255,用(".")分割,比如,172.16.253.1;IPv4 地址内的数不会以 0 开头。比如,地址 172.16.254.01 是不合法的

ip = input("请输入IP地址:")
items = ip.split('.')
if len(items) != 4:
    print("不合法的IP地址")
else:
    for i in range(len(items)):
        if int(items[i]) > 255 or items[i].startswith('0'):
            print("不合法的IP地址")
            exit()
        else:
            continue
    print("合法的IP地址")

(4)机器人移动

a=input("输入动作[R]右 [L]左 [D]下 [U]上:")
r=l=d=u=0
for i in a:
    if i=="R":
        r+=1
    elif i=="L":
        l+=1
    elif i=="D":
        d+=1
    elif i=="U":
        u+=1
    else:
        print("请输入正确的字符!")
        exit()
print(" true " if r==l and u==d else "false")

字符串格式符操作

通过字符串进行调用format方法,format中传入的参数即通过{索引}进行获取,其索引0对应的是format传入的第一个参数;如:

#字符串格式符操作
str1="hello"
str2="world"
print("{0}{1}".format(str1,str2))

基础学习笔记:3 python字符串_转义_18

%d、%i:表示的是十进制数占位

%f:表示的是浮点数的占位

number=1
print("%03d"%number)

number1=1.222222
print("%.2f"%number1)

print("%%d%d"%number)

基础学习笔记:3 python字符串_字符串_19