目录

  • 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的转义字符

符号

意义

符号

意义

符号

意义

\(在行尾时)

续行符

\\

反斜杠符号

\'

单引号

\"

双引号

\a

响铃

\b

退格(Backspace)

\e

转义

\000


\n

换行

\v

纵向制表符

\t

横向制表符

\r

回车

\f

换页

\oyy

八进制数,y 代表 0~7 的字符

\xyy

十六进制数,以 \x 开头,yy代表的字符

\other

其它的字符以普通格式输出

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字符串格式化

下表给出常用的格式化形式

符号

描述

符号

描述

%c

格式化字符及其ASCII码

%s

格式化字符串

%d

格式化整数

%u

格式化无符号整型

%o

格式化无符号八进制数

%x

格式化无符号十六进制数

%X

格式化无符号十六进制数(大写)

%f

格式化浮点数字,可指定小数点后的精度

%e

用科学计数法格式化浮点数

%E

作用同%e,用科学计数法格式化浮点数

%g

%f%e的简写

%G

%F%E的简写

%p

用十六进制数格式化变量的地址

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']