Python基础篇-----字符串

        在Python语言中,字符串是一个有序字符的集合。一个字符串被创建之后,其中的字符的相对位置就固定了。字符串和元组一样都属于不可变的数据类型。

1 字符串的创建

        我们可以使用引号('或者")来创建字符串。创建字符串的方式很简单,只用给变量分配一个值即可。

# 单引号
str1 = 'hello world!'
# 双引号
str2 = "I love you!"

        当我们分配变量的值比较多时,我们可以采用三引号('''或""")。

str1 = '''
		离离原上草,一岁一枯荣
		野火烧不尽,春风吹又生
	   '''

2.字符串的输入和输出

2.1 格式化输出

占位符含义
%d转为整数类型
%f转为浮点型
%s转为字符串型
%x转为十六进制整数

一般的我们可以对占位符进行一定的修饰,常用的占位符的修饰。

(1)-号表示左对齐。

(2).号表示小数点后的位数。

(3)0表示补前导0。

print("%02d" %3)		# 03
print('%.2f' % 3.1415)	# 3.14

        需要注意的是当我们想要表示%号的时候,我们可以采用%%来表示,不然很容易会出现与预期不一样的结果。

2.2 format()格式化输出

# 输出语句{[占位符]}".format("传入的参数")
age = 18
print("{}".format(age))
name = '张三'
print("我的名字是{},我今年{}岁了".format(name, age))
print("我的名字是{1},我今年{0}".format(name, age))

         我们不难发现format传入参数时会带有一定的次序,默认是从左到右一个一个填入,但如果我们自身规定顺序的话,那结果就会截然不同。

2.3 使用转义字符f也可以进行格式化输出

age = 18
name = "张三"
print(f'我今年{age}岁了,我的姓名是{name}')

         我们可以在输出字符串前加上f,这样Python解释器就能明白我们正在进行格式化输出。

2.4 输入input():

# 使用格式 变量名 = input()
name = input("请输入您的名字:")
print(name)
print(type(name))

         我们可以观察到input函数传入的是一个字符串,所以我们在对具体问题分析时需要考虑到这一点,比如我们想要输入年龄,我们都知道年龄是一个整数类型,因此我们需要在赋值的过程中进行类型转化。

age = int(input("请输入您的年龄"))
print(type(age))

 

3. 索引:   

      索引又成为下标,相当于字符串内的元素在字符串中的编号。比如我们取快递的时候就有一个取件码,然后我们可以通过取件码快速找到我们的快递。

        索引是从0开始的,因此索引的结束应该为字符串元素个数-1。索引又分为正向索引和反向索引。

abcde
正向索引01234
反向索引-5-4-3-2-1

4. 切片:

​            切片是指对操作的对象截取其中一部分的操作。字符串,列表,元组都支持切片操作。**

​    切片我们通常是利用索引来完成的,其格式如下:

# 变量名[开始:结束:步长] 从当前索引开始,一直到索引结束,但是不包含最后的索引值,步长就是隔多少个数取值
name = "hellopython"

print(name[2:5])			 # 从索引2开始,到5结束(但是不打印索引5的值)  打印llo

print(name[: 5])			 # 从索引0开始,到5结束(但是不打印索引5的值)  打印hello

print(name[1:])     		 # 从1开始,一直到结束,打印ellopython

print(name[:])			     # 打印全部元素

print(name[2:7:2])			 # 从索引2开始,到7结束(但是不打印索引7的值),步长为2,打印loy 

5. 字符串的基本操作:

5.1 查找:

· in 和 not in : 用于判断某个字符串是否为待判断字符串的子串,返回的是bool型(True,False)

print('i' in 'iphone')			# True
print('p' not in 'apple')		# Flase

· find():检测某个字符串是否包含在这个字符串当中,如果存在则返回这个字符串第一个匹配值最开始的位置下标,否则则返回-1。什么意思勒?举个例子吧:

var1 = 'abcde'					
print(var1.find('c'))		  # 2 从左到右匹配到c停止返回c的下标
var2 = '红鲤鱼与绿鲤鱼与驴'
print(var2.find('鲤鱼'))		 # 1 从左往右匹配,匹配到第一个鲤鱼停止匹配并返回鲤的下标,因为鲤的下标								# 是第一个匹配最开始的位置下标
var3 = 'abcde'
print(var3.find('f'))		  # 这个字符串不存在当前字符串中返回-1 

· index():检测某个⼦串是否包含在这个字符串中,如果在返回这个⼦串开始的位置下标,否则则报异常。

注意:开始和结束位置下标可以省略,表示在整个字符串序列中查找。

# 字符串序列.index(⼦串, 开始位置下标, 结束位置下标)
var = "hello python and hello world!!!"
print(var.index('and'))			# 返回从左到右第一个匹配and的下标  13
print(var.index('java'))		# 字符串中没有java发生报错
print(var.index('hello',10,25)) # 从索引10开始查找直到查找索引为25(但不包含25这一索引,返回第一个匹配的字符串)  17

· count():返回某个子串在字符串中的出现次数

注意:开始和结束位置下标可以省略,表示在整个字符串序列中查找。

# 字符串序列.count(子串,开始,结束)
var = "红鲤鱼与绿鲤鱼与驴"
print(var.count("鲤鱼"))		# 若未设置开始以及结束位置,则默认从左到右全部查找  2
print(var.count("鲤鱼",3,8))	# 从索引3开始查找,到索引为8结束(不包括8这一索引)  1

拓展:

var = "红鲤鱼与绿鲤鱼与驴"
# rfind():与find()功能相同。但查找的方向从右侧开始
print(var.rfind("鲤鱼"))		# 5
# rindex():与index()功能相同,但查找方向为右侧开始
print(var.rindex("鲤鱼"))		# 5

5.2 修改

· replace():替换内容

注意:替换次数如果超出⼦串出现次数,则替换次数为该⼦串出现次数。

# 字符串序列.replace(旧⼦串, 新⼦串, 替换次数) 
var = '红鲤鱼与绿鲤鱼与驴'
print(var.replace("鲤鱼","金鱼"))
print(var.replace("鲤鱼","金鱼",1))

注意:数据按照是否能直接修改分为可变类型和不可变类型两种。字符串类型的数据修改的时候不能改变原有字符串,属于不能直接修改数据的类型即是不可变类型。

· split():按照指定的字符进行分割,返回的是一个列表。

注意:num表示的是分割字符出现的次数。

# 字符串序列.split(分割字符, num)
var = '红鲤鱼与绿鲤鱼与驴'
print(var.split('鲤鱼'))
print(var.split('鲤鱼', 1))

 
· join():用一个字符或子串合并字符串,也就是将多个串合并。

# 字符或⼦串.join(多字符串组成的序列)
li1 = ["hello", "python", "i", "love", "you"]		# 将列表转化为字符串,并用,分隔
t1 = ("hello", "python", "i", "love", "you")		# 将元组转化为字符串,并用,分隔
se1 = {"hello", "python", "i", "love", "you"}		# 将集合转化为字符串,并用,分隔
print(','.join(li1))
print(','.join(t1))
print(','.join(se1))

 

5.3 大小写转化

· capitalize():将字符串第一个字符转化为大写

var = "hello python and hello world"
print(var.capitalize())

· title(): 将字符串每个单词首字母转化为大写

var = "hello python and hello world"
print(var.title())

· upper(): 将字符串中的小写转为大写

var = "hello python and hello world"
print(var.upper())

· lower(): 将字符串中的小写转为大写

var = "HELLO PYTHON AND HELLO WORLD"
print(var.lower())

· lstrip(): 删除字符串左侧空白字符,无参数默认为空格。

var = "    hello python and hello world      "
print(var.lstrip())				# 删除左侧空格

· rstrip(): 删除字符串右侧的空白字符,无参数传递默认为空格。

var = "    hello and python and hello world      "
print(var.rstrip())				# 删除右侧空格

· strip(): 删除字符串两侧的空白字符,无参数传递默认为空格。

var = "    hello python and hello world      "
print(var.lstrip())				# 删除两侧空格

· ljust():返回⼀个原字符串左对⻬,并使⽤指定字符(默认空格)填充⾄对应⻓度 的新字符串 。

· rjust():返回⼀个原字符串右对⻬,并使⽤指定字符(默认空格)填充⾄对应⻓度 的新字符串。

· center():返回⼀个原字符串居中,并使⽤指定字符(默认空格)填充⾄对应⻓度 的新字符串。

# 字符串序列.ljust(⻓度, 填充字符)
var = "hello"
print(var.ljust(10,"_"))	# 左对齐
print(var.rjust(10,"_"))	# 右对齐
print(var.center(10,"_"))	# 居中对齐

 

5.4 判断

· startswith(): 检查字符串是否以传入子串作为开头(返回的是一个bool型)

# 字符串序列.startswith(⼦串, 开始位置下标, 结束位置下标) 
var = "hello and python and hello world"

print(var.startswith("hello"))			# 开头是hello,返回True
print(var.startswith("and"))			# 开头不是and,返回False
print(var.startswith("and",6,20))		# 在索引6-20,开头是and,返回True

· endswith(): 检查字符串是否以传入子串作为结尾(返回的是一个bool型)

# 字符串序列.endswith(⼦串, 开始位置下标, 结束位置下标)
var = "hello and python and hello world"

print(var.endswith("and"))				# 结尾不是and,返回False
print(var.endswith("world"))			# 结尾时world,返回True
print(var.endswith("and",0,9))			# 在0到9的索引范围,是and结尾,返回True

· isalpha():如果字符串所有字符都是字⺟则返回 True, 否则返回 False。

mystr1 = 'hello'
mystr2 = 'hello12345'

print(mystr1.isalpha())		# 结果:True
print(mystr2.isalpha())		# 结果:False

· isdigit():如果字符串只包含数字则返回 True 否则返回 False。

mystr1 = 'aaa12345'
mystr2 = '12345'

print(mystr1.isdigit())		# 结果: False
print(mystr2.isdigit())		# 结果:True

· isalnum(): 如果字符串所有字符都是字⺟和数字则返 回 True,否则返回False。

mystr1 = 'aaa12345'
mystr2 = '12345-'

print(mystr1.isalnum())		# 结果:True
print(mystr2.isalnum())		# 结果:False

· isspace():如果字符串中只包含空⽩,则返回 True,否则返回 False。

mystr1 = '1 2 3 4 5'
mystr2 = ' '

print(mystr1.isspace())		# 结果:False
print(mystr2.isspace())		# 结果:True

6. 字符串的运算

a = 'Hello' b = 'World'

+字符串连接操作print(a+b)HelloWorld
*字符串倍增操作print(a*3)HelloHelloHello
[]字符串索引获取字符串元素操作print(a[1])e
[ : ]字符串切片操作print(a[1:5])ello
in成员运算符-如果字符串包含给定字符则返回True,否则返回Falseprint('e' in a)True
not in成员运算符-如果字符串不包含给定运算符则返回True,否则返回Flaseprint('c' not in a)True
r取消转义(如\n,\t等)print(r"\n\n\n")\n\n\n
%格式化字符串

        以上是我对字符串基础学习的总结,字符串的一些操作和方法确实是要比其他序列类型要多哈哈,如果大家发现本文中出现的问题,希望大家能够指明,我们共同学习探讨!!!

  • 6
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是第八笔记。 ### Python 文件操作 #### 文件操作基础 - 文件操作是指对计算机硬盘上的文件进行读写操作,Python 中的文件操作是通过内置的 `open()` 函数实现的。 - `open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)` 函数用于打开一个文件,并返回文件对象。 - `file`:要打开的文件名(包含路径)。 - `mode`:文件打开的模式,有读模式('r')、写模式('w')、追加模式('a')等。 - `buffering`:缓冲区大小,0 表示不缓冲,1 表示缓冲一行,大于 1 表示缓冲区大小,负数表示使用默认缓冲区大小。 - `encoding`:文件编码格式。 - `errors`:错误处理方式。 - `newline`:换行符。 - 文件对象的方法: - `read(size=-1)`:读取文件内容,`size` 表示读取的字节数,不指定表示读取整个文件内容。 - `readline(size=-1)`:读取文件中的一行内容,`size` 表示读取的字节数,不指定表示读取整行内容。 - `readlines(hint=-1)`:读取所有行并返回一个列表,`hint` 表示读取的字节数,不指定表示读取全部行。 - `write(string)`:将字符串写入文件。 - `writelines(sequence)`:将字符串序列写入文件,序列中每个元素都是字符串。 #### 文件操作示例 - 打开文件:`file = open('file_name', 'r')`。 - 读取文件内容:`content = file.read()`。 - 关闭文件:`file.close()`。 - 读取文件中的一行内容:`line = file.readline()`。 - 逐行读取文件内容:`for line in file: print(line)`。 - 写入文件内容:`file.write('Hello World!')`。 - 写入多行内容:`file.writelines(['Hello', 'World', '!'])`。 #### 文件操作进阶 - 使用 `with` 语句可以自动关闭文件,避免忘记关闭文件而导致的问题。 - 示例: ```python with open('file_name', 'r') as file: content = file.read() ``` - 使用 `os` 模块可以对文件进行更加高级的操作,如文件重命名、删除等。 - 示例: ```python import os os.rename('file_name', 'new_file_name') # 重命名文件 os.remove('file_name') # 删除文件 ``` ### Python 面向对象编程 #### 面向对象编程基础 - 面向对象编程是一种编程思想,将程序中的对象看作是相互交互的实体,通过它们之间的交互来完成程序的功能。 - 类(class)是面向对象编程中的一个重要概念,它是一种用户自定义的数据类型。 - 类中包含属性(特征)和方法(行为),属性指对象的数据成员,方法指对象的行为成员。 - 类的定义: ```python class ClassName: # 类属性 attribute = value # 构造函数 def __init__(self, arg1, arg2, ...): self.arg1 = arg1 self.arg2 = arg2 ... # 类方法 def method(self, arg1, arg2, ...): ... ``` - 类的实例化: ```python object_name = ClassName(arg1, arg2, ...) ``` - 对象的属性和方法: ```python object_name.attribute # 访问对象的属性 object_name.method(arg1, arg2, ...) # 调用对象的方法 ``` #### 面向对象编程示例 - 示例:定义一个 `Rectangle` 类,实现矩形的面积和周长计算。 ```python class Rectangle: # 类属性 name = 'Rectangle' # 构造函数 def __init__(self, width, height): self.width = width self.height = height # 类方法 def area(self): return self.width * self.height def perimeter(self): return 2 * (self.width + self.height) ``` - 使用示例: ```python rectangle = Rectangle(3, 4) print(rectangle.name) # 输出 'Rectangle' print(rectangle.area()) # 输出 12 print(rectangle.perimeter()) # 输出 14 ``` ### 总结 本笔记介绍了 Python 中的文件操作和面向对象编程基础,包括文件操作函数的使用、类的定义、对象的实例化和属性、方法的访问等。了解和掌握这些内容可以帮助我们更好地进行 Python 编程。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值