目录
- 2.【Python编程】字符串String相关知识及基本操作
- 2.1 字符串的创建
- 2.2 访问字符串的值
- 2.3 字符串的截取
- 2.4 字符串的运算
- 2.5 Python的转义字符
- 2.6 原始字符串
- 2.7 Python字符串格式化
- 2.8 Python的字符串内建函数
2.【Python编程】字符串String相关知识及基本操作
备注: 本教程主要使用Python3.6在jupyter notebook上编程实现。Python环境配置参考《【Python学习】Windows10开始你的Anaconda安装与Python环境管理》或者《【Python学习】纯终端命令开始你的Anaconda安装与Python环境管理》。
2.1 字符串的创建
# 字符串是Python中最常用的数据类型。我们可以使用引号('或")来创建字符串。
string1 = "Hello World"
# 与Java或者C++不同的是,Python不支持单字符(char)类型,单字符在Python中也是作为一个字符串使用。
string2 = "a"
print("打印字符串:",string1)
print("打印单字符:",string2)
打印字符串: Hello World
打印单字符: a
2.2 访问字符串的值
与Python编程】列表List相关知识及基本操作提到的列表一样。
字符串的索引有两种形式:从前往后以及从后往前:
- 从前往后
string1 = “Hello World”
索引为0,1,2,3,4,5,6,7,8,9,10 - 从后往前
string1 = “Hello World”
索引为-11,-10,-9,-8,-7,-6,-5,-4,-3,-2,-1
假设string1有n个字符,则对于i(0=<i<n),有string1[i]=string1[-(n-i)]
# 根据下标索引访问元素
print("string1[0]: ", string1[0]) #第1个元素
print("string1[9]: ", string1[9]) #第10个/最后1个元素
print("string1[-1]: ", string1[-1]) #第10个/最后1个元素
print("string1[-2]: ", string1[-2]) #倒数第2个元素
print("string1[-11]: ", string1[-11]) #倒数第11个元素
string1[0]: H
string1[9]: l
string1[-1]: d
string1[-2]: l
string1[-11]: H
# 假设string1有n个元素,则对于i(0=<i<n),有
# string1[i]=string1[-(n-i)]
n = len(string1)
print("i","string1[i]","string1[-(n-i)]")
for i in range(n):
print(i,",",string1[i],",",string1[-(n-i)])
i string1[i] string1[-(n-i)]
0 , H , H
1 , e , e
2 , l , l
3 , l , l
4 , o , o
5 , ,
6 , W , W
7 , o , o
8 , r , r
9 , l , l
10 , d , d
2.3 字符串的截取
如果你要实现从字符串中获取一段子字符串的话,可以使用 [头下标:尾下标] 来截取相应的字符串,其中下标是从 0 开始算起,可以是正数或负数,下标可以为空表示取到头或尾。
[头下标:尾下标] 获取的子字符串包含头下标的字符,但不包含尾下标的字符。
# 根据[头下标:尾下标]获取子字符串
print("string1[0:5]: ", string1[0:5])
print("string1[:5]: ", string1[:5])
print("string1[1:5]: ", string1[1:5])
print("string1[5:9]: ", string1[5:9])
print("string1[5:10]: ", string1[5:10])
print("string1[5:]: ", string1[5:])
print("string1[:]: ", string1[:])
print("string1[:-1]: ", string1[:-1])
print("string1[5:-1]: ", string1[5:-1])
print("string1[-2:-1]: ", string1[-2:-1])
string1[0:5]: Hello
string1[:5]: Hello
string1[1:5]: ello
string1[5:9]: Wor
string1[5:10]: Worl
string1[5:]: World
string1[:]: Hello World
string1[:-1]: Hello Worl
string1[5:-1]: Worl
string1[-2:-1]: l
2.4 字符串的运算
加号(+
)是字符串连接运算符,星号(*
)是重复操作。in
或者not in
判断字符串是否在另一个字符串当中。
string3 = "Hello "
string4 = "World"
string5 = string3 + string4
print(string5)
Hello World
string6 = "aa"
string7 = 2*string6
print(string7)
aaaa
# 判断"Hello"是否在字符串string5当中
print("Hello" in string5)
True
2.5 Python的转义字符
符号 | 意义 | 符号 | 意义 | 符号 | 意义 |
| 续行符 |
| 反斜杠符号 |
| 单引号 |
| 双引号 |
| 响铃 |
| 退格(Backspace) |
| 转义 |
| 空 |
| 换行 |
| 纵向制表符 |
| 横向制表符 |
| 回车 |
| 换页 |
| 八进制数,y 代表 0~7 的字符 |
| 十六进制数,以 \x 开头,yy代表的字符 |
| 其它的字符以普通格式输出 |
print("Hello\tworld")
Hello world
print("\'Hello world\'")
'Hello world'
print("Hello \
world")
Hello world
print("\110\145\154\154\157\40\127\157\162\154\144\41") # 八进制数
print("\x48\x65\x6c\x6c\x6f\x20\x57\x6f\x72\x6c\x64\x21") # 十六进制数
Hello World!
Hello World!
2.6 原始字符串
所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。 原始字符串除在字符串的第一个引号前加上字母"r"(可以大小写)以外,与普通字符串有着几乎完全相同的语法。
print(r'Hello world\n')
Hello world\n
2.7 Python字符串格式化
下表给出常用的格式化形式
符号 | 描述 | 符号 | 描述 |
| 格式化字符及其ASCII码 |
| 格式化字符串 |
| 格式化整数 |
| 格式化无符号整型 |
| 格式化无符号八进制数 |
| 格式化无符号十六进制数 |
| 格式化无符号十六进制数(大写) |
| 格式化浮点数字,可指定小数点后的精度 |
| 用科学计数法格式化浮点数 |
| 作用同 |
|
|
|
|
| 用十六进制数格式化变量的地址 |
print ("我叫 %s 今年 %d 岁!" % ('马爸爸', 50))
我叫 马爸爸 今年 50 岁!
x=input("请输入数字:")
print("你输入的数字是:%d" %(int(x)))
请输入数字:100
你输入的数字是:100
# 字符串格式化的一个实例:日期的格式化
import datetime
string8 = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') # 年-月-日 时:分:秒
print(string8)
2022-01-02 21:36:22
2.8 Python的字符串内建函数
# .capitalize(): 将字符串的第一个字符转换为大写
string9 = "hello world!"
print ("string9: ", string9)
print ("string9.capitalize(): ", string9.capitalize())
string9: hello world!
string9.capitalize(): Hello world!
# .center(width,fillchar): 返回一个指定的宽度 width 居中的字符串,fillchar 为填充的字符,默认为空格。
print ("string9.center(40, '*') : ", string9.center(40, '*'))
string9.center(40, '*') : **************hello world!**************
# find(str, beg=0, end=len(string))
# 检测 str 是否包含在字符串中,如果指定范围 beg 和 end ,则检查是否包含在指定范围内,如果包含返回开始的索引值,否则返回-1
print(string9.find("world"))
6
# lower(): 转换字符串中所有大写字符为小写.
string10 = "South China University of Technology"
print(string10.lower())
# upper(): 转换字符串中所有小写字符为大写.
print(string10.upper())
south china university of technology
SOUTH CHINA UNIVERSITY OF TECHNOLOGY
# .count(str, beg= 0,end=len(string)): 返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数
print("string10.count('o') : ", string10.count('o'))
string10.count('o') : 4
# lstrip(): 截掉字符串左边的空格或指定字符
string11 = " South China University of Technology "
print(string11.lstrip())
string12 = "#2021年度报告"
print(string12.lstrip('#')) # 将抖音话题的#符号去掉
# .rstrip(): 截掉字符串右边的空格或指定字符
print(string11.lstrip().rstrip())
# .strip([chars]): 在字符串上执行 lstrip()和 rstrip()
print(string11.strip())
South China University of Technology
2021年度报告
South China University of Technology
South China University of Technology
# split(str="", num=string.count(str)): 以 str 为分隔符截取字符串,如果 num 有指定值,则仅截取 num+1 个子字符串
string13 = "Welcome to China!"
print(string13.split()) # 以空格为分隔符
url = "https://www.runoob.com/python/python-func-input.html"
#以“.” 进行分隔
path =url.split("/")
print(path)
['Welcome', 'to', 'China!']
['https:', '', 'www.runoob.com', 'python', 'python-func-input.html']