字符串是 Python 中最常用的数据类型。我们可以使用引号('或")来创建字符串。
创建字符串很简单,只要为变量分配一个值即可, Python 字符串属于不可变类型。
本章节将对Python 字符串做详细说明。
转义字符
在需要在字符中使用特殊字符时,python 用反斜杠\ 转义字符, 常用的见的转义如下示例:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 用反斜杠 \ 转义字符。
# \ 续行符
print("你好,\
我在学python")
# \ 反斜杠符号
print("\")
# ' 单引号
print("'")
# " 双引号
print(""")
# \r 回车
print("你好,\r我在学python")
# \n 换行
print("你好,\n我在学python")
# \t 横向制表符
print("你好,\t我在学python")
字符串格式化
常见的格式化如下示例:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# %c 格式化字符及其ASCII码
# %s 格式化字符串
# %d 格式化整数
# %u 格式化无符号整型
# %o 格式化无符号八进制数
# %x 格式化无符号十六进制数
# %X 格式化无符号十六进制数(大写)
# %f 格式化浮点数字,可指定小数点后的精度
# %e 用科学计数法格式化浮点数
# %E 作用同%e,用科学计数法格式化浮点数
# %g %f和%e的简写
# %G %f 和 %E 的简写
# %p 用十六进制数格式化变量的地址
print("我叫 %s" % '小明')
print("我叫 %s 今年 %d 岁!" % ('小明', 10))
# f-string 是 python3.6 之后版本添加的,称之为字面量格式化字符串,是新的格式化字符串的语法。
# 之前我们习惯用百分号 (%):
name = '小明'
age = 10
print(f"我叫 {name}, 今年 {age} 岁!")
# f-string 在 Python 3.8 的版本中可以使用 = 符号来拼接运算表达式与结果:
num1 = 10
num2 = 5
print(f"{num1 + num2 =}") # 输出:num1 + num2 =15
# format() 格式化字符串
print("{} {}".format("hello", "world")) # 输出:hello world
print("{0} {1}".format("hello", "world")) # 输出:hello world
print("{0} {1}, {0} {2}".format("hello", "world", "python")) # 输出:hello world, hello python
print("大家好,我叫:{name}, 今年:{age}岁了!".format(age=10, name='milo')) # 输出:大家好,我叫:milo, 今年:10岁了!
print("{:.2f}".format(3.1415926)) # 输出:3.14
print("{:.0f}".format(3.1415926)) # 输出:3
print("{:.2%}".format(0.25)) # 输出:25.00%
字符串运算符
见示例:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# + 字符串拼接
a = "Hello "
b = "Python"
print(a + b) # 输出:Hello Python
# * 重复输出字符串
print(a * 10) # 输出:Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello
# [ : ] 字符串切片, 遵循左闭右开原则
str = '0123456789'
print("str[1] 输出结果:", str[1]) # 这不是切片, 获取字符串下标为1的字符
# 这是切片,输出下标为1到结束的字符
print("str[1:] 输出结果:", str[1:]) # 输出:123456789
# 这是切片,输出下标为1到下标为4的字符,遵循左闭右开原则
print("str[1:4] 输出结果:", str[1:4]) # 输出:123
# 这是切片,输出开始到下标为4的字符,遵循左闭右开原则
print("str[:4] 输出结果:", str[:4]) # 输出:0123
# name[x:y:z]中x表示起始位置,y终止位置的前一个,z步长(默认为1), -1标识倒序。
print("str[:4] 输出结果:", str[1:8:1]) # 输出:1234567
print("str[:4] 输出结果:", str[1:8:2]) # 输出:1357
print("str[:4] 输出结果:", str[8:1:-1]) # 输出:8765432
常用的内置函数
见示例:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
str = 'hello, world'
# capitalize(): 把字符串的首字母大写
print(str.capitalize()) # 输出:Hello, world
# upper() 转换 string 中的小写字母为大写
print(str.upper()) # 输出:Hello, world
# isupper() 如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False
print(str.isupper()) # 输出:False
# lower() 转换 string 中所有大写字符为小写.
print(str.lower()) # 输出:Hello, world
# islower() 如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False
print(str.islower()) # 输出:True
str = ' Hello '
# lstrip() 去除左空格
print(str.lstrip()) # 输出:Hello____ _表示空格
# rstrip() 去除左空格
print(str.rstrip()) # 输出:Hello
# rstrip() 去除收尾空格
print(str.strip()) # 输出:Hello
# join(seq) 以 string 作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串
str = ','
seq = ["a", "b", "c"]
print(str.join(seq)) # 输出:a,b,c
seq = ["1", "2", "3"]
print(str.join(seq)) # 输出:1,2,3
# seq = [1, 2, 3]
# print(str.join(seq)) # 这是错误示例
# startswith(str, beg=0,end=len(string)) 检查字符串是否是以 obj 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查.
str = '我爱Python'
print(str.startswith('我')) # 输出:True
# endswith(str, beg=0,end=len(string)) 检查字符串是否以 obj 结束,如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束,如果是,返回 True,否则返回 False.
print(str.endswith('n')) # 输出:True
# format() 格式化字符串
print("{} {}".format("hello", "world")) # 输出:hello world
print("{0} {1}".format("hello", "world")) # 输出:hello world
print("{0} {1}, {0} {2}".format("hello", "world", "python")) # 输出:hello world, hello python
print("大家好,我叫:{name}, 今年:{age}岁了!".format(age=10, name='milo')) # 输出:大家好,我叫:milo, 今年:10岁了!
print("{:.2f}".format(3.1415926)) # 输出:3.14
print("{:.0f}".format(3.1415926)) # 输出:3
print("{:.2%}".format(0.25)) # 输出:25.00%
# find() 检测 str 是否包含在 string 中,如果 beg 和 end 指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则返回-1
info = 'abca'
print(info.find('a')) # 从下标0开始,查找在字符串里第一个出现的子串,返回结果:0
print(info.find('a', 1)) # 从下标1开始,查找在字符串里第一个出现的子串:返回结果3
# index(str, beg=0, end=len(string)) 跟find()方法一样,只不过如果str不在 string中会报一个异常.
str1 = "this is string example....wow!!!";
str2 = "exam";
print(str1.index(str2)) # 输出:15
print(str1.index(str2, 10)) # 输出:15
# print(str1.index(str2, 40)) # 异常