1.【定义】
在 Python 中,字符串是由引号包裹的任意字符组成的不可变序列,用于表示文本类型数据。
字符串可以通过使用 单引号
或 双引号
或 三引号
来定义,用于表示文本信息,如姓名、消息等。
# 使用单引号定义字符串:
name = 'Alice'
# 使用双引号定义字符串:
message = "Hello, world!"
# 使用三引号定义字符串
sql_string = """select * from user where name='tom';"""
1.1 转义字符
转义字符在字符串中用于表示一些特殊字符或序列,以及插入难以直接输入的字符。
常见的转义字符包括:\n
表示换行符,\t
表示制表符,\"
表示双引号,\'
表示单引号,\\
表示反斜杠。
通过使用转义字符,可以在字符串中插入特殊字符或表示这些无法直接输入的内容。
message = "Hello\nWorld!"
print(message)
# output:
# Hello
# World!
1.2 字符串下标
下标是指从 0
开始的数字编号,也称为索引。
在字符串中,每一个字符都会对应一个下标,通过下标可以获取字符串中该下标对应的字符
语法格式:字符串对象[下标]
1.3 编码
在Python2中,普通字符串是以8位ASCII码进行存储的,而Unicode字符串则存储为16位unicode字符串,这样能够表示更多的字符集。使用的语法是在字符串前面加上前缀 u。
在Python3中,所有的字符串都是Unicode字符串。
2.【相关用法】
1.切片
str[start,end]
2.字符串运算符
(1) +
字符串拼接
str1+str2
(2)*
str*num 字符串str的num倍数,重复输出
(3)r/R
引号里的字符串原格式输出(忽略转义字符等)
print(R'xxxx')
(4)in / not in
a in b,返回bool类型
3.转义字符 \
比较常用的:
(1)\n 换行
(2)\ 续行符(在行尾部时)
>>> print("line1 \
... line2 \
... line3")
line1 line2 line3
>>>
(3)\r 回车 (将后边的字符移动到字符串开头)
>>> print("Hello\rWorld!")
World!
>>> print('google runoob taobao\r123456')
123456 runoob taobao
4.字符串格式化
字符串格式化是一种将变量或值插入到字符串中的过程,以创建具有动态内容的字符串。
格式化
4.1 %
最基本的用法是将一个值插入到一个有字符串格式符 %s 的字符串中
#!/usr/bin/python3
print ("我叫 %s 今年 %d 岁!" % ('小明', 10))
4.2 f-string
Python 3.6 及更高版本引入的一种简洁且直观的字符串格式化方法。
以 f 开头,后面跟着字符串,字符串中的表达式用大括号 {} 包起来,它会将变量或表达式计算后的值替换进去
(1)基本用法
>>> name = 'Runoob'
>>> f'Hello {name}' # 替换变量
'Hello Runoob'
>>> f'{1+2}' # 使用表达式
'3'
>>> w = {'name': 'Runoob', 'url': 'www.runoob.com'}
>>> f'{w["name"]}: {w["url"]}'
'Runoob: www.runoob.com'
(2)对齐方式
f-string
的格式化选项方式使用同 format()
函数一致
(3)表达式和函数调用
可以使用表达式和函数调用来生成动态的字符串内容。
name = "Alice"
age = 25
greeting = f"{'Hello' if age < 30 else 'Hi'} {name.upper()}"
print(greeting)
# 输出:Hello Alice
在上述示例中,使用了一个条件表达式 {‘Hello’ if age < 30 else ‘Hi’} 来根据年龄的大小选择不同的问候词。
如果年龄小于 30,那么使用 Hello;否则使用 Hi。
同时,在插入变量 name 后,使用了 name.upper() 函数调用来将名称转换为大写字母。
4.3 format()
format()
方法是一种传统的字符串格式化方法。它使用占位符 {}
来表示要插入的变量或值,并通过传递参数来替换这些占位符。
(1)基本用法
name = "Alice"
age = 25
message = "My name is {}, and I am {} years old.".format(name, age)
print(message)
# 输出:My name is Alice, and I am 25 years old.
说明:使用 {}
占位符表示要插入的变量或值。在调用 format()
方法时,通过 参数的顺 序将相应的值传递给占位符,从而替换字符串中的占位符部分。
(2)位置参数
可以在占位符 {}
中使用索引号来指定要插入的参数的位置。
name = "Alice"
age = 25
message = "My name is {0}, and I am {1} years old.".format(name, age)
print(message)
# 输出:My name is Alice, and I am 25 years old.
说明: {0}
表示第一个参数 name
要插入的位置,{1}
表示第二个参数 age
要插入的位置。
(3)关键字参数
name = "Alice"
age = 25
message = "My name is {name}, and I am {age} years old.".format(name=name, age=age)
print(message)
# 输出:My name is Alice, and I am 25 years old.
说明: {name}
和 {age}
分别表示关键字参数 name
和 age
要插入的位置。通过在 format()
方法中使用关键字参数,可以根据参数名将值插入到相应的位置。
(4)格式化选项
在 format()
方法中,还可以使用格式化选项来控制插入值的格式,如字段宽度、对齐方式、小数点精度等。
例子1: {:.2f}
是一个格式化选项,它指定了插入的值应该被格式化为带有两位小数的浮点数。
pi = 3.141592653589793
formatted_pi = "The value of pi is approximately {:.2f}".format(pi)
print(formatted_pi)
# 输出:The value of pi is approximately 3.14
例子2:
# 字符串对齐
print("The value is ljust: |{:5}|".format("abc"))
print("The value is rjust: |{:<5}|".format("abc"))
print("The value is rjust: |{:>5}|".format("abc"))
# 数字对齐
print("The value is rjust: |{:5}|".format(11))
print("The value is rjust: |{:<5}|".format(11))
print("The value is rjust: |{:>5}|".format(11))
5.三引号
三引号允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符
#!/usr/bin/python3
para_str = """这是一个多行字符串的实例
多行字符串可以使用制表符
TAB ( \t )。
也可以使用换行符 [ \n ]。
"""
print (para_str)
结果:
这是一个多行字符串的实例
多行字符串可以使用制表符
TAB ( )。
也可以使用换行符 [
]。
应用:需要一块HTML或者SQL时可以使用三引号
errHTML = '''
<HTML><HEAD><TITLE>
Friends CGI Demo</TITLE></HEAD>
<BODY><H3>ERROR</H3>
<B>%s</B><P>
<FORM><INPUT TYPE=button VALUE=Back
ONCLICK="window.history.back()"></FORM>
</BODY></HTML>
'''
cursor.execute('''
CREATE TABLE users (
login VARCHAR(8),
uid INTEGER,
prid INTEGER)
''')
6.字符串内建函数
(1)count(str, beg= 0,end=len(string))
返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数
(2) find(str, beg=0, end=len(string)) 查找
检测 str 是否包含在字符串中,如果指定范围 beg 和 end ,则检查是否包含在指定范围内,如果包含返回开始的索引值,否则返回-1
字符串查找相关方法:
- index(sub,start,end) 检测sub是否在字符串中,在的话返回开始索引值,否则抛异常
- rindex(sub, start, end) 从右侧开始查
- find(sub,start,end) 检测sub是否在字符串中,在的话返回开始索引值,否则返回-1
- rfind(sub, start, end) 从右侧开始查
(3)join(seq) 连接
以指定字符串作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串
a.join(b)
a是字符串,分隔符
b是列表、元组
print('p'.join(['1','3','4']))
输出:
1p3p4
join()和split()区别
join()是使用固定间隔连接列表/元组的元素
split()是用固定的符号把字符串分割成列表
(4)split 分割
两种:
- str.split(‘’) 只支持单个切割符号
- re.split(‘正则表达式’,str) 支持多个分隔符
区别:Python: str.split()和re.split()的区别 - 筱筱的春天 - 博客园
split(str=“”, num=string.count(str))
以 str 为分隔符截取字符串,如果 num 有指定值,则仅截取 num+1 个子字符串
c = 'wuuuw,jsj,j'
print(c.split(','))
输出:
['wuuuw', 'jsj', 'j']
更多函数请参考 Python3 字符串 | 菜鸟教程
(5)strip() 删除
默认删除字符串头和尾的空字符串(\n\r\t)
str.strip([char]) 删除str里char
(6)replace()
将目标的字符串替换为想要的字符串
# 将原字符串中的school替换为top school
"hogwarts school".replace("school", "top school")