Python 从菜鸟到大咖的必经之路_Python字符串

大家好!
我是小黄,很高兴又跟大家见面啦 !
拒绝水文,从我做起 !!!!
如若转载 ,麻烦请注明出处!!!!

今天更新的是:


创建时间:2021年2月16日
重构时间:2021年5月25日
软件: Python 3 、Pycharm


1. Python 字符串:

  • Python 中字符串被定义为引号之间的字符集合。
  • 字符串是 Python 中最常用的数据类型。我们可以使用引号( ' 或 " )来创建字符串。Python 支持使用成对的 单引号 或 双引号。
  • 创建字符串很简单,只要为变量分配一个值即可。例如:
# 举个例子:
t1 = 'i love Python!'
print(t1, type(t1))

# i love Python! <class 'str'>

t2 = "I love Python!"
print(t2, type(t2))

# I love Python! <class 'str'>

print(5 + 8) # 13
print('5' + '8') # 58

1.1 Python 字符串的切片与拼接:

  • Python 不支持单字符类型,单字符在 Python 中也是作为一个字符串使用。
  • Python 访问子字符串,可以使用方括号 [] 来截取字符串,字符串的截取的语法格式如下:
  • 变量[头下标:尾下标]
  1. 类似于元组具有不可修改性
  2. 从 0 开始 (和 C 一样)
  3. 切片通常写成 start:end 这种形式,包括「 start 索引」对应的元素,不包括「 end 索引」对应的元素。
  4. 索引值可正可负,正索引从 0 开始,从左往右;负索引从 -1 开始,从右往左。使用负数索引时,会从最后一个元素 开始计数。最后一个元素的位置编号是 -1。

在这里插入图片描述
在这里插入图片描述

# 字符串的截取与拼接:
str1 = 'I Love LsgoGroup'
print(str1[:6]) # I Love
print(str1[5]) # e
print(str1[:6] + " 插入的字符串 " + str1[6:])

# I Love 插入的字符串 LsgoGroup

s = 'Python'
print(s) # Python
print(s[2:4]) # th
print(s[-5:-2]) # yth
print(s[2]) # t
print(s[-1]) # n

# 0、a,b为参数。从字符串指针为a的地方开始截取字符,到b的前一个位置(因为不包含b)
var1 = "hello world";
print(var1[a: b]);

# 1、如果a,b均不填写,默认取全部字符。即,下面这两个打印结果是一样的
print(var1[: ]);  # hello world
print(var1);      # hello world

# 2、如果a填写,b不填写(或填写的值大于指针下标),默认从a开始截取,至字符串最后一个位置
print(var1[3: ]); # lo world

# 3、如果a不填写, b填写,默认从0位置开始截取,至b的前一个位置
print(var1[: 8]); # hello wo

# 4、如果a为负数,默认从尾部某一位置,开始向后截取
print(var1[-2: ]); # ld

# 5、如果a>=b, 默认输出为空。
print(var1[3: 3]);
print(var1[3: 2]);

1.2 Python 转义字符:

  • 原始字符串只需要在字符串前边加一个英文字母 r 即可。
  • 在需要在字符中使用特殊字符时,python 用反斜杠 \ 转义字符。如下表:

在这里插入图片描述
在这里插入图片描述
示例一】:正常输出文件路径

# 1. 原始字符串只需要在字符串前边加一个英文字母 r 即可:
print(r'C:\Program Files\Intel\Wifi\Help')

# C:\Program Files\Intel\Wifi\Help

示例二】:Python三引号允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符:

# 2. python三引号允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符:

para_str = """这是一个多行字符串的实例
多行字符串可以使用制表符
TAB ( \t )。
也可以使用换行符[ \n ]。
"""
print (para_str)
'''
这是一个多行字符串的实例
多行字符串可以使用制表符
TAB ( )。
也可以使用换行符[
]
'''

# 这是一个多行字符串的实例
# 多行字符串可以使用制表符
# TAB ( 	 )。
# 也可以使用换行符[
#  ]。

综合示例】:

# \'
# \"

# 在print语句中 输出 ” “ 的方式
print("乔治说:\"今天会下雨吗?\"")  # 使用转义符

print('乔治说:"今天会下雨吗?"')  # 句子里输出双引号, print() 里面使用 单引号

print(" 乔治说:'今天会下雨吗?' ")



# 输出下面的路径
# C:\Users\Karl\Desktop\test\background\abc


print("\\Users\Karl\Desktop\\test\\background\\abc")  # 方法1: 在 \ 再加一个 \
print(r"\Users\Karl\Desktop\test\background\abc")     # 方法2: 在 语句前面加 r ---> raw 表示按原始字符输出
print("C:/Users/Karl/Desktop/test/background/abc")   # 方法3: 将 \ 变成 /  只适用于Windows系统


1.3 Python 字符串运算符:

在这里插入图片描述

# 1. Python 字符串运算符:
a = "Hello"
b = "Python"

print("a + b 输出结果:", a + b)
print("a * 2 输出结果:", a * 2)
print("a[1] 输出结果:", a[1])
print("a[1:4] 输出结果:", a[1:4])

if ("H" in a):
    print("H 在变量 a 中")
else:
    print("H 不在变量 a 中")

if ("M" not in a):
    print("M 不在变量 a 中")
else:
    print("M 在变量 a 中")

print(r'\n')
print(R'\n')

# a + b 输出结果: HelloPython
# a * 2 输出结果: HelloHello
# a[1] 输出结果: e
# a[1:4] 输出结果: ell
# H 在变量 a 中
# M 不在变量 a 中
# \n
# \n

1.4 Python 字符串格式化:

  • Python 支持格式化字符串的输出 。尽管这样可能会用到非常复杂的表达式,但最基本的用法是将一个值插入到一个有字符串格式符 %s的字符串中。
  • 在 Python 中,字符串格式化使用与 C 中 sprintf 函数一样的语法。

在这里插入图片描述
举例说明字符串格式化输出:

str1 = "abc"
str2 = 123
# print(str1 + str2)

name = "大师兄"
address = "天津市xxxxxx大学软件学院"
phone_number = 13888888888

# %占位符
# %s ---字符串(string)
# %d 表示一个十进制数字  decimal
# %f 表示一个浮点数类型
print("收件人是%s,地址是%s,电话号码:%d" % (name, address, phone_number))

"""
1.定义字符串变量 name ,输出: 我的名字叫 大雄,请多关照!
2.定义整数变量 student_no,输出:我的学号是000004
3.定义小数 price、weight、money,输出 :菠萝单价 9.00元/斤,购买了5.00斤,需要支付45.00元
4.定义一个小数 scale =0.2 ,输出:数据比例是 20.00%
"""
# 1.定义字符串变量 name ,输出: 我的名字叫 大雄,请多关照!
name1 = "大雄"
name2 = "胖虎"
name3 = "静香"
print("我的名字叫 %s,请多关照!" % name3)

# 2.定义整数变量 student_no,输出:我的学号是000004
# %06d表示要输出一个 6位的整数,不够的位,
# 用0填充,如果这个数大于6,就输出这个数字就可以了
student_no = 1234567
print("我的学号是%06d" % student_no)

# 3.定义小数 price、weight、money,输出 :菠萝单价 9.00元/斤,购买了5.00斤,需要支付45.00元、
# %.2f限制小数点后面的位数
# 如果小数的位数不够,也输出指定的位数
price = 9
weight = 5.00
money = price * weight
print("菠萝单价 %.2f元/斤,购买了%0.2f斤,需要支付%.2f元" % (price, weight, money))

# 4.定义一个小数 scale =0.2 ,输出:数据比例是 20.00%
sacle = 0.2
print("数据比例是 %0.2f%%" % (sacle*100))

  • 格式化操作辅助指令:

在这里插入图片描述

# 格式化字符串:

print('%c' % 97) # a
print('%c %c %c' % (97, 98, 99)) # a b c
print('%d + %d = %d' % (4, 5, 9)) # 4 + 5 = 9
print("我叫 %s 今年 %d 岁!" % ('小明', 10)) # 我叫 小明 今年 10 岁!
print('%o' % 10) # 12
print('%x' % 10) # a
print('%X' % 10) # A
print('%f' % 27.658) # 27.658000
print('%e' % 27.658) # 2.765800e+01
print('%E' % 27.658) # 2.765800E+01
print('%g' % 27.658) # 27.658
text = "I am %d years old." % 22
print("I said: %s." % text) # I said: I am 22 years old..
print("I said: %r." % text) # I said: 'I am 22 years old.'

# a
# a b c
# 4 + 5 = 9
# 我叫 小明 今年 10 岁!
# 12
# a
# A
# 27.658000
# 2.765800e+01
# 2.765800E+01
# 27.658
# I said: I am 22 years old..
# I said: 'I am 22 years old.'.

1.4.1 Python 格式化函数:

  • Python format 格式化函数

举例说明格式化函数输出一:

# 1. Python 3.6版本之前的:格式化字符串(%)
name = 'Runoob'
'Hello %s' % name
print('Hello %s' % name)

# Hello Runoob

# 2. Python 3.6版本之后:
# f-string 格式化字符串以 f 开头,后面跟着字符串,字符串中的表达式用大括号 {} 包起来,它会将变量或表达式计算后的值替换进去,
# 实例如下:
name = 'Runoob'
f'Hello {name}'  # 替换变量
'Hello Runoob'
f'{1+2}'         # 使用表达式
print(name);print(f'{1+2}')

# Runoob
# 3

w = {'name': 'Runoob', 'url': 'www.runoob.com'}
f'{w["name"]}: {w["url"]}'
print(w);print(f'{w["name"]}: {w["url"]}')

# {'name': 'Runoob', 'url': 'www.runoob.com'}
# Runoob: www.runoob.com

# 3. Python 3.8的版本中可以使用 = 符号来拼接运算表达式与结果:
x = 1
print(f'{x+1}')   # Python 3.6

# 2

x = 1
print(f'{x+1=}')   # Python 3.8

# x+1=2

# 4. Python format 格式化函数:

str = "{0} Love {1}".format('I', 'Lsgogroup') # 位置参数
print(str) # I Love Lsgogroup
str = "{a} Love {b}".format(a='I', b='Lsgogroup') # 关键字参数
print(str) # I Love Lsgogroup
str = "{0} Love {b}".format('I', b='Lsgogroup') # 位置参数要在关键字参数之前
print(str) # I Love Lsgogroup
str = '{0:.2f}{1}'.format(27.658, 'GB') # 保留小数点后两位
print(str) # 27.66GB

# I Love Lsgogroup
# I Love Lsgogroup
# I Love Lsgogroup
# 27.66GB

举例说明格式化函数输出二:

# format
"""
不带编号,即“{}”
带数字编号,可调换顺序,即“{2}",“{1}”
带关键字,即“{a}","{tom}"
"""
name = "Sandy"
gender = "女"
age = 18

# 姓名:Sandy,性别:女,今年18岁了
print("姓名:{},性别:{},今年{}岁了".format(name, gender, age))

# 姓名:Sandy,性别:女,今年18岁了,Sandy是我的好朋友!
print("姓名:{0},性别:{1},今年{2}岁了,{0}是我的好朋友!".format(name, gender, age))

# 姓名:Sandy,性别:女,今年18岁了,Sandy是我的好朋友!
print("姓名:{name1},性别:{gender2},今年{age3}岁了,{name1}是我的好朋友!".format(name1=name, gender2=gender, age3=age))

print(f"姓名:{name},性别:{gender},今年{age}岁了,{name}是我的好朋友!")

1.5 Python 的字符串内建函数:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.5.1 举例说明:

  • capitalize()将字符串的第一个字符转换为大写。
str2 = 'xiaoxie'
print(str2.capitalize()) 

# Xiaoxie
  • lower()转换字符串中所有大写字符为小写。
  • upper()转换字符串中的小写字母为大写。
  • swapcase()将字符串中大写转换为小写,小写转换为大写。
str2 = "DAXIExiaoxie"
print(str2.lower()) # daxiexiaoxie
print(str2.upper()) # DAXIEXIAOXIE
print(str2.swapcase()) # daxieXIAOXIE

# daxiexiaoxie
# DAXIEXIAOXIE
# daxieXIAOXIE

  • count(str, beg= 0,end=len(string))返回strstring里面出现的次数,如果beg或者 end指定则返回指定范围内 str出现的次数
str2 = "DAXIExiaoxie"
print(str2.count('xi'))

 # 2
  • endswith(suffix, beg=0, end=len(string))检查字符串是否以指定子字符串 suffix结束,如果是,返回 True,否则返回 False。如果 begend指定值,则在指定范围内检查。
  • startswith(substr, beg=0,end=len(string))检查字符串是否以指定子字符串substr开头,如果是,返回True,否则返回 False。如果begend指定值,则在指定范围内检查。
str2 = "DAXIExiaoxie"
print(str2.endswith('ie')) # True
print(str2.endswith('xi')) # False
print(str2.startswith('Da')) # False
print(str2.startswith('DA')) # True
  • find(str, beg=0, end=len(string))检测 str是否包含在字符串中,如果指定范围 begend,则检查是 否包含在指定范围内,如果包含,返回开始的索引值,否则返回 -1。
  • rfind(str, beg=0,end=len(string))类似于find()函数,不过是从右边开始查找。
str2 = "DAXIExiaoxie"
print(str2.find('xi')) # 5
print(str2.find('ix')) # -1
print(str2.rfind('xi')) # 9
  • isnumeric()如果字符串中只包含数字字符,则返回 True,否则返回 False。
str3 = '12345'
print(str3.isnumeric()) # True
str3 += 'a'
print(str3.isnumeric()) # False
  • ljust(width[, fillchar])返回一个原字符串左对齐,并使用fillchar (默认空格)填充至长度 width的新字符串。
  • rjust(width[, fillchar])返回一个原字符串右对齐,并使用fillchar (默认空格)填充至长度 width的新字符串。
str4 = '1101'
print(str4.ljust(8, '0')) # 11010000
print(str4.rjust(8, '0')) # 00001101

  • lstrip([chars])截掉字符串左边的空格或指定字符。
  • rstrip([chars])删除字符串末尾的空格或指定字符。
    -strip([chars])在字符串上执行lstrip()rstrip() 。
str5 = ' I Love LsgoGroup '
print(str5.lstrip()) # 'I Love LsgoGroup '
print(str5.lstrip().strip('I')) # ' Love LsgoGroup '
print(str5.rstrip()) # ' I Love LsgoGroup'
print(str5.strip()) # 'I Love LsgoGroup'
print(str5.strip().strip('p')) # 'I Love LsgoGrou'

-partition(sub)找到子字符串sub,把字符串分为一个三元组 (pre_sub,sub,fol_sub),如果字符串中不包含 sub则返回('原字符串',' ',' ') 。

  • rpartition(sub)类似于 partition( )方法,不过是从右边开始查找。
str5 = ' I Love LsgoGroup '
print(str5.strip().partition('o')) # ('I L', 'o', 've LsgoGroup')
print(str5.strip().partition('m')) # ('I Love LsgoGroup', '', '')
print(str5.strip().rpartition('o')) # ('I Love LsgoGr', 'o', 'up')
  • replace(old, new [, max])把 将字符串中的old替换成 new,如果max指定,则替换不超过max次。
str5 = ' I Love LsgoGroup '
print(str5.strip().replace('I', 'We')) # We Love LsgoGroup
  • split(str="", num)不带参数默认是以空格为分隔符切片字符串,如果num参数有设置,则仅分隔 num个子字符串,返回切片后的子字符串拼接的列表。
str5 = ' I Love LsgoGroup '
print(str5.strip().split()) # ['I', 'Love', 'LsgoGroup']
print(str5.strip().split('o')) # ['I L', 've Lsg', 'Gr', 'up']

u = "www.baidu.com.cn"
# 使用默认分隔符
print(u.split()) # ['www.baidu.com.cn']
# 以"."为分隔符
print((u.split('.'))) # ['www', 'baidu', 'com', 'cn']
# 分割0次
print((u.split(".", 0))) # ['www.baidu.com.cn']
# 分割一次
print((u.split(".", 1))) # ['www', 'baidu.com.cn']
# 分割两次
print(u.split(".", 2)) # ['www', 'baidu', 'com.cn']
# 分割两次,并取序列为1的项
print((u.split(".", 2)[1])) # baidu
# 分割两次,并把分割后的三个部分保存到三个变量
u1, u2, u3 = u.split(".", 2)
print(u1) # www
print(u2) # baidu
print(u3) # com.cn

# 去掉换行符:
c = '''say
hello
baby'''
print(c)
# say
# hello
# baby
print(c.split('\n')) # ['say', 'hello', 'baby']
string = "hello boy<[www.baidu.com]>byebye"
print(string.split('[')[1].split(']')[0]) # www.baidu.com
print(string.split('[')[1].split(']')[0].split('.')) # ['www', 'baidu', 'com']
  • splitlines([keepends])按照行(’\r’, ‘\r\n’, \n’)分隔,返回一个包含各行作为元素的列表,如果参数keepends为False,不包含换行符,如果为 True,则保留换行符。
str6 = 'I \n Love \n LsgoGroup'
print(str6.splitlines()) # ['I ', ' Love ', ' LsgoGroup']
print(str6.splitlines(True)) # ['I \n', ' Love \n', ' LsgoGroup']
  • maketrans(intab, outtab)创建字符映射的转换表,第一个参数是字符串,表示需要转换的字符,第二个参数也 是字符串表示转换的目标。
  • translate(table, deletechars="")根据参数 table给出的表,转换字符串的字符,要过滤掉的字符放到deletechars参数中。
str = 'this is string example....wow!!!'
intab = 'aeiou'
outtab = '12345'
trantab = str.maketrans(intab, outtab)
print(trantab) # {97: 49, 111: 52, 117: 53, 101: 50, 105: 51}
print(str.translate(trantab)) # th3s 3s str3ng 2x1mpl2....w4w!!!

下期预告:

  • 07 TIANCHI_Python_列表

各位路过的朋友,如果觉得可以学到些什么的话,点个赞 再走吧,欢迎各位路过的大佬评论,指正错误,也欢迎有问题的小伙伴评论留言,私信。

每个小伙伴的关注都是本人更新博客的动力!!!
请微信搜索【 在下小黄 】文章更新将在第一时间阅读 !
在这里插入图片描述

博客中若有不恰当的地方,请您一定要告诉我。前路崎岖,望我们可以互相帮助,并肩前行!


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

在下小黄

ღ给个赞 是对小黄最大的支持

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

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

打赏作者

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

抵扣说明:

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

余额充值