字符串的定义
Python中字符串比较特殊,在一般的其他编程语言中,都是用双引号“”
来定义字符串,但是Python中,有多种引号都可以定义字符串。
示例:定义字符串
# 方法1
zs = "张三"
print(zs, type(zs))
# 方法2
ls = '李四'
print(ls, type(ls))
# 方法3
ww = '''王五'''
print(ww, type(ww))
# 方法4
zl = """赵六"""
print(zl, type(zl))
# 方法5
s1 = f"{3} + {4} = {3 + 4}"
print(s1, type(s1))
# 方法6
s2 = "我的名字是:%s" % zs
print(s2, type(s2))
输出结果:
张三 <class 'str'>
李四 <class 'str'>
王五 <class 'str'>
赵六 <class 'str'>
3 + 4 = 7 <class 'str'>
我的名字是:张三 <class 'str'>
转义字符
转义字符指的是有特殊意义的字符串,常见的如下:
-
n
:表示换行 -
t
:表示制表符,一般用于调整输出格式 -
//
:表示一个斜杆,一般用于表示Windows操作系统中的路径 -
"
:表示双引号,一般用于表示JSON字符串中嵌套的双引号
示例:转义字符的基本使用
# `n`:表示换行
print("第一行n第二行")
# `t`:表示制表符,一般用于调整输出格式
print("张三t22t男")
# `//`:表示一个斜杆,一般用于表示Windows操作系统中的路径
print("D://img/bg.img")
# `"`:表示双引号,一般用于表示JSON字符串中嵌套的双引号
print("name = "张三"")
输出结果:
第一行
第二行
张三 22 男
D://img/bg.img
name = "张三"
字符串的输出
Python中输出字符串有多种方式,常见的有:
-
直接输出 -
f
字符串输出 -
format
字符串输出 -
%
字符串输出
示例:字符串输出
name = "张大鹏"
# 直接输出
print("我的名字是:", name)
# `f`字符串输出
print(f"我的名字是:{name}")
# `format`字符串输出
print("我的名字是:{}".format(name))
# `%`字符串输出
print("我的名字是:%s" % name)
输出结果:
我的名字是: 张大鹏
我的名字是:张大鹏
我的名字是:张大鹏
我的名字是:张大鹏
字符串的输入
Python中要输入字符串,使用input函数即可。
示例:输入用户名和密码
username = input("请输入用户名:")
password = input("请输入密码:")
if username == "zhangdapeng" and password == "zhangdapeng":
print("登录成功")
else:
print("用户名或密码错误")
输出结果:
请输入用户名:zhangdapeng
请输入密码:zhangdapeng
登录成功
下标
字符串可以看成是一种字符串序列,又一个一个的字符组成,每个字符都有自己的位置。
字符的位置是从0开始的有序整数。比如字符串abcde
,那么字符的位置就是a:0, b:1, c:2, d:3, e:4
。
Python中,通过字符串变量[字符位置]
能够获取对应位置上的字符,字符的位置又叫做索引,或者叫做下标。
示例:通过索引获取字符串中的每个字符
s = "abcde"
# 方法1
print(s[0], s[1], s[2], s[3], s[4])
# 方法2,使用循环
for i in range(5):
print(s[i], end="t")
print()
# 方法3,for可以直接遍历字符串
for i in s:
print(i, end="t")
print()
输出结果:
a b c d e
a b c d e
a b c d e
切片
通过索引可以获取字符串中的某个字符,但是通过切片,可以获取字符串中的某些字符。切片是直接从字符串中截取一段内容出来。
切片的语法如下:
字符串变量[开始索引:结束索引:步长]
-
开始索引,结束索引,步长都是整数。可以是正整数,0,或者负整数。 -
开始索引,结束索引,步长都有默认值,都可以省略不写。开始索引的默认值是0,表示开始;结束索引的默认值是-1,表示结束;步长的默认值是1,表示一次截取一个字符,挨个儿截取,不跳过。
示例:字符串切片的基本用法
s = "你好,我是张大鹏"
# 截取出名字
# 方法1:表示从索引5截取到末尾
print(s[5:])
# 方法2:表示从倒数第三个截取到末尾
print(s[-3:])
输出结果:
张大鹏
张大鹏
利用切片反序字符串
切片的步长是可以是负数的,所以有一种特殊的用法,可以利用步长让字符串反序。
示例:字符串反序
s = "12345"
print(s)
# 反序
print(s[::-1])
输出结果:
12345
54321
截取偶数位
如果将步长设置为2,那么我们就是每隔两个位置取一个字符。利用这个特点,我们可以取出偶数位置上或者奇数位置上的字符。
示例:截取偶数生成一个新的数字
s = "12345"
print(s)
# 使用偶数生成一个新的数字
s1 = s[1::2]
print(s1, int(s1))
输出结果:
12345
24 24
查找子串的索引
通过index方法或者find方法,能够找到子串的索引。如果找不到,index返回-1,find会报错。还有rfind
方法和find
方法的功能是一样的,不过是先从右边开始查找。rindex
和index
的功能是一样的,也是先从右边开始查找。
练习:从字符串"大家好,我叫张大鹏,我今年22岁了"
中找出年龄22
示例:查找子串
s = "大家好,我叫张大鹏,我今年22岁了"
# 查找 今年
child_str = "今年"
print(s.find(child_str))
print(s.index(child_str))
# 提取年龄
start_index = s.index(child_str)
end_index = s.index("岁")
age = s[start_index + len(child_str):end_index]
print(age)
输出结果:
11
11
22
统计子串的个数
使用count方法可以统计子串在字符串中出现的次数。
练习:统计篮球
在字符串“张三的爱好是篮球,羽毛球,乒乓球。李四的爱好是篮球,游泳,爬山。王五的爱好是看电影,玩游戏,写代码。”
出现了多少次。
示例:统计子串出现的次数
s = "张三的爱好是篮球,羽毛球,乒乓球。李四的爱好是篮球,游泳,爬山。王五的爱好是看电影,玩游戏,写代码。"
child_str = "篮球"
# 统计
child_count = s.count(child_str)
# 输出
print(f"{child_str}在字符串中出现了{child_count}次")
输出结果:
篮球在字符串中出现了2次
字符串替换
使用replace
方法可以替换字符串中的子串。这个方法用的比较多,比较敏感词过滤,特殊字符处理等。
示例1:使用replace方法替换字符串
s = "你好,世界"
print(s)
# 替换
s = s.replace("世界", "张大鹏")
print(s)
输出结果:
你好,世界
你好,张大鹏
切割字符串
有一种文件格式叫做.csv
,这种文件在数据分析中经常用到。其特点就是用逗号,
分割一组数据,用换行n
表示一组数据。要处理csv
文件,往往就需要用到字符串切割方法。
在Python中,使用split
方法可以切割字符串。
示例:切割字符串
s = "张三,男,22"
# 切割
arr = s.split(",")
# 查看结果
print(arr, type(arr))
输出结果:
['张三', '男', '22'] <class 'list'>
合并字符串
有切割就会有合并。在开发中,我们经常需要将多个字符串按照指定的分隔符合并为一个字符串,这个时候,使用join
方法可以轻松实现。
示例:合并字符串
# 将以下数据用逗号合并为一个字符串
name = "张三"
age = 22
gender = "男"
# 方法1:合并元组
# 注意:age是int,不能直接合并,需要先转换为字符串
s = ",".join((name, str(age), gender))
print(s, type(s))
# 方法2:合并列表
s = ",".join([name, str(age), gender])
print(s, type(s))
输出结果:
张三,22,男 <class 'str'>
张三,22,男 <class 'str'>
字符串大小写
在Python中,处理字符串大小写有几个常用的方法:
-
capitalize
:字符串首字母大写 -
title
:字符串每个单词首字母大写 -
upper
:字符串全大写 -
lower
:字符串全小写
示例:字符串大小写
s = "hello world"
# `capitalize`:字符串首字母大写
print(s.capitalize())
# `title`:字符串每个单词首字母大写
print(s.title())
# `upper`:字符串全大写
print(s.upper())
# `lower`:字符串全小写
print(s.lower())
输出结果:
Hello world
Hello World
HELLO WORLD
hello world
字符串空格处理
字符串中经常会有空格,有时候空格在左边,有时候空格在右边,有时候两边都有空格。
Python中处理字符串空格的常用方法如下:
-
lstrip
:去除字符串左边的空格 -
rstrip
:去除字符串右边的空格 -
strip
:去除字符串左右两边的空格
示例:字符串空格处理
s = " abc 123 "
# 注意:这里将空格替换为-,方便查看效果
# `lstrip`:去除字符串左边的空格
print(s.lstrip().replace(" ", "-"))
# `rstrip`:去除字符串右边的空格
print(s.rstrip().replace(" ", "-"))
# `strip`:去除字符串左右两边的空格
print(s.strip().replace(" ", "-"))
输出结果:
abc-123------
---------------abc-123
abc-123
字符串判断前缀和后缀
在开发中,经常需要判断字符串的前缀或者后缀。比如,判断一个字符串是否以http://
开头能够知道这个字符串是否为一个url
字符串。判断一个字符串是否以.jpg
结尾,可以判断这个字符串是否为一个图片地址。
示例:判断字符串前缀和后缀
# 判断是否为URL
s1 = "http://www.baidu.com/"
print(s1.startswith("http://"))
# 判断是否为图片
img = "test.jpg"
print(img.endswith(".jpg"))
输出结果:
True
True
字符串其他判断方法
字符串还有一些其他的判断方法,偶尔会用到。比如:
-
isalpha
:是否全部由字母组成 -
isdigit
:是否全部由数字组成 -
isalnum
:是否由字母和数字组成 -
isspace
:是否全部为空格
示例:字符串其他判断方法
# `isalpha`:是否全部由字母组成
print("abc".isalpha())
# `isdigit`:是否全部由数字组成
print("123".isdigit())
# `isalnum`:是否由字母和数字组成
print("abc123".isalnum())
# `isspace`:是否全部为空格
print(" trn".isspace())
输出结果:
True
True
True
True
原文始发于微信公众号(张大鹏520):Python基础语法06 字符串
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/48657.html