Python小白之字符串(str)学习笔记

前言

本次学习笔记主要记录了Python中字符串的定义、字符串的操作函数(有很多只挑了几个),以及算法里面会用到的字符串的字串的计算公式和Python中格式化输出字符串操作。

1.Python字符串定义

C系列(C、C++等)、Java语言中通过单引号(')起始和结束表示字符、双引号(")起始和结束来表示字符串;Python中字符串定义类似,既能使用单引号(')、也能使用双引号(")定义字符串,但是Python没有区分字符和字符串,均统称为字符串。

Python字符串定义:

  • 单引号(')起始和结束
  • 双引号(")起始和结束
  • 三个单引号(‘’')起始和结束
  • 三个双引号(“”")起始和结束
# 字符串定义(4种定义)
string = 'hello python'
print(string)
string = "hello python"
print(string)
string = '''hello python'''
print(string)
string = """hello python"""
print(string)

打印结果:

hello python
hello python
hello python
hello python

在这里插入图片描述
当然还是有点区别的:

直接看示例:

# 字符串定义区别
str_single_quotes = ('hello '
                     'world')
str_double_quotation_mark = ("hello "
                             "world")
                             
str_three_single_quotation_marks = '''hello 
world'''
str_three_double_quotation_marks = """hello 
world"""

str_double_quotation_mark1 = "hello\n world"
str_three_single_quotation_marks1 = '''好好学习,
                               天天向上!'''
str_three_double_quotation_marks1 = """会当凌绝顶, 
                                一览众山小。"""

print(str_single_quotes)
print(str_double_quotation_mark)
print(str_three_single_quotation_marks)
print(str_three_double_quotation_marks)
print(str_three_single_quotation_marks1)
print(str_three_double_quotation_marks1)
print(str_double_quotation_mark1)

打印结果:

hello world
hello world
hello 
world
hello 
world
好好学习,
                               天天向上!
会当凌绝顶, 
                                一览众山小。
hello
 world

从结果可以发现:

  • 前两个字符串“hello world”虽然在代码里面是换行了(按下回车键后编辑器自动加了圆括号),实际打印然并卵;
  • 接着后面两个字符串“hello ”和“world”出现了换行的效果;
  • 最后的口号和古诗不但保持换行的效果,而且空格也保留了下来;
  • 总的来说就是,单引号(‘)和双引号(")不能保留原样格式,要达到换行效果只能转义字符\n实现,而三个单引号(’‘’)和三个双引号(“”“)定义的字符串保留了原样格式;当然单引号(')和双引号(”)比较常用,而三个单引号(‘’')和三个双引号(“”")通常用于函数说明或者是代码文档说明使用。

在这里插入图片描述

2.Python str操作函数

字符串类型为不可变类型,即一旦赋值了在内存中存在直到内存释放回收,故大部分操作函数都会返回新的值,而字符串对像本身的值没有改变(仅个人观点,方便记忆字符串操作的特点,一些考试或认证会在这儿挖坑!)。

比如如下代码(字符串替换函数):

str_ = "123abc456"
str_.repalce('abc', '')
print(str_ )

打印结果:

123abc456

函数会返回替换后的新的值,即”123456“,原来的值并没有改变,还是”123abc456“。
在这里插入图片描述

(1)获取字符串长度(不是字符串的成员函数)— len()

str_ = "123abc456"
print(len(str_))

打印结果:

9

(2)字母大小写操作函数—upper()和lower()

string = 'abcd'
string_upper = string.upper()
print(string)
print(string_upper)

string_lower = string_upper.lower()
print(string_upper)
print(string_lower)

打印结果:

abcd
ABCD
abcd
ABCD
abcd

(3)字串替换函数—replace()

语法格式:
str.replace(aim_sub_str, replace_str)
str为变量名,aim_sub_str为将被替换的字符(串),replace_str为替换后的字符(串)。

  • 字符替换
str_ = 'aaabbbccc'
str_new = str_.replace('a', 'x')
print(str_)
print(str_new)  # 'a'--->'x'

打印结果:

aaabbbccc
xxxbbbccc
  • 字串替换
str_ = '123abc456def'
str_new = str_.replace('abc', '')  # 'abc'--->空,即达到移除abc的效果
print(str_)
print(str_new)

打印结果:

123abc456def
123456def

(4)字串查找函数—find和rfind()

语法格式:
str.find(aim_sub_str) 或 str.rfind(aim_sub_str)
str为变量名,aim_sub_str为要查找的字符(串)

  • find()

返回值为第一个匹配值字串的起始索引(哪怕有多个字串也只返回第一个),若没有则返回-1。

index = str_.find('a')
print(index)

index = str_.find('x')
print(index)

index = str_.find('abc')
print(index)

打印结果:

3
-1
3
  • rfind()

返回值为最后一个匹配值字串的起始索引(哪怕有多个字串也只返回最后一个),若没有则返回-1。

index = str_.rfind('a')
print(index)

index = str_.rfind('x')
print(index)

index = str_.rfind('abc')
print(index)

打印结果:

12
-1
12

3.字符串子串个数

N = n ∗ ( n + 1 ) 2 + 1 N=\frac{n*(n+1)}{2}+1 N=2n(n+1)+1

N 为字串个数, n 为字符串长度 N为字串个数, n为字符串长度 N为字串个数,n为字符串长度

提示:N包括字符串本身和空字符,有些考试或者认证会在这里挖坑,除去字符串本身和空串,各自减去1即可。

4.格式化输出字符串

Python中格式化输出字符串的三种方式:

  • 格式化操作符(%)
  • format函数
  • f-string

(1)格式化操作符(%)

name = "LiSi"
age = 18
amplitude = 1.7687

print("姓名:%s,年龄:%d, 身高:%.2f" % (name, age, amplitude))

打印结果:

姓名:LiSi,年龄:18, 身高:1.77

(2) %d 和 %f 格式化补充说明!

其中,这里中点学了一下,%d%f 的格式化操作,在百分号(%)和格式符号之间可以指定数字占位数(不足时用0或空格填充)或小数的保留位数。

  • %d
    (1) 百分号(%)和格式符(d)之间数据为常规整数,则数值的长度小于占位符长度时,使用空格填充不足的位数;
    (2) 百分号(%)和格式符(d)之间数据为0开头的数字,则数值的长度小于占位符长度时,使用0填充不足的位数;
    (3)数值的长度大于指定占位符长度时,则按照数值本身的长度输出。
语法格式说明
%d简洁方式
%2d最少占2位(≥2),空格填充
%02d最少占2位(≥2),0 填充
  • %f
    小数格式化的小数位数指定格式为:数字1+英文句号(.) + 数字2,数字1为整体的占位长度格式化(参照 %d ),数字2为小数保留位数(四舍五入);
    %2.2f 即整数部分占位为2,小数部分为保留2位小数,若指定小数位数小于浮点数的本身长度,则按照四舍五入保留指定位数;若大于浮点数的本身长度,则用0填充到末尾;默认不指定则保留6位小数。
语法格式说明
%f简洁方式(保留6位小数)
%.nf保留n位小数,四舍五入
% m.nf整体字符串占位为m,若m不是0开头的数字,则空格填充,否则 0 填充,如 %10.2整体为长度不足 (<10) 时用 空格 填充,%010.2f整体为长度不足 (<10) 时用 0 填充
  • %d
number = 6

print("number的普通格式化输出为:%d" % number)

print("number的占位6位(空格填充)式化输出为:%6d" % number)
print("number的占位6位(0填充)式化输出为:%06d" % number)

输出结果:

number的普通格式化输出为:6
number的占位6位(空格填充)式化输出为:     6
number的占位6位(0填充)式化输出为:000006
  • %f
number = 1.123456789

print("number的默认格式化输出为:%f" % number)
print("number的保留6位小数输出为:%.6f" % number)

print("number的保留5位小数输出为:%.5f" % number)
print("number的保留12位小数输出为:%.12f" % number)

print("number的整体长度为10(空格填充)、保留6位小数的格式化输出为:%10.6f" % number)
print("number的整体长度为10(0   填充)、保留6位小数的格式化输出为:%010.6f" % number)

打印结果:

number的默认格式化输出为:1.123457
number的保留6位小数输出为:1.123457

number的保留5位小数输出为:1.12346
number的保留12位小数输出为:1.123456789000
number的整体长度为10(空格填充)、保留6位小数的格式化输出为:  1.123457
number的整体长度为100   填充)、保留6位小数的格式化输出为:001.123457

(2)format函数

format函数则通过花括号({})来占位,同时还可以通过在花括号({})内添加数字指定参数序号,如:{1},就是指定format参数列表中的第一个参数。
语法格式;

  • “参数0{},参数1{1},参数2{2}”.format(para0, para1, para2)
  • “参数0{0},参数1{1},参数2{2}”.format(para0, para1, para2)
  • 默认(按照参数列表顺序填充)
name = "LiSi"
age = 18
print("姓名:{},年龄:{}".format(name, age))

打印结果:

姓名:LiSi,年龄:18
  • 指定参数列表顺序
name = "LiSi"
age = 18
print("姓名:{0},年龄:{1}".format(name, age))
print("姓名:{1},年龄:{0}".format(name, age))

打印结果:

姓名:LiSi,年龄:18
姓名:18,年龄:LiSi

(3)f-string

这种方式就最简洁的写法了,我还是比较喜欢这种格式化输出方式,相当于结合前两种的用法。

语法说明
普通模式:f"{}"
整数高级模式:f"{para:10}"f"{para:010}"指定整数占位长度和符号
小数高级模式:f"{para:.2}"f"{para:5.2}"f"{para:05.2}"指定整数占位长度和符号
name = "LiSi"
age = 18
amplitude = 1.7687

print(f"姓名:{name},年龄:{age},身高{amplitude}")

print(f"姓名:{name},年龄:{age:10},身高{amplitude:.2}")

print(f"姓名:{name},年龄:{age:010},身高{amplitude:10.2}")
print(f"姓名:{name},年龄:{age:010},身高{amplitude:010.2}")

打印结果:

姓名:LiSi,年龄:18,身高1.7687

姓名:LiSi,年龄:        18,身高1.8

姓名:LiSi,年龄:0000000018,身高       1.8
姓名:LiSi,年龄:0000000018,身高00000001.8

5.知识小结

此人很懒,什么都没写!
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值