目录
[一、 字符串定义](#一、 字符串定义)
[二、 字符串格式化](#二、 字符串格式化)
[三、 字符串常用操作](#三、 字符串常用操作)
在 Python 中,字符串用来表示文本数据的序列类型。Python 提供了丰富的内置方法和操作符来处理字符串,操作既强大又灵活,下面是常用字符串的详细介绍和处理方法:
一、 字符串定义
在 Python 中,字符串用单引号 ( ' ) 或双引号 ( " ) 来定义,也可以使用三引号( ''' 或 """ )来定义多行字符串。
python
# 单引号
str1 = 'Hello, World!'
# 双引号
str2 = "Python Programming"
# 三引号(用于多行字符串)
str3 = '''This is
a multi-line
string.'''
二、 字符串格式化
Python 提供了多种字符串格式化方式,常见的有 % 格式化(%格式化和C语言一致)、str.format() 方法和 f-string(Python 3.6+)。
使用 % 格式化:
python
name = "Alice"
age = 30
formatted_str = "My name is %s and I am %d years old." % (name, age)
print(formatted_str)
使用 str.format() :
python
name = "Alice"
age = 30
formatted_str = "My name is {} and I am {} years old.".format(name, age)
print(formatted_str)
使用 f-string(推荐,Python 3.6+):
python
name = "Alice"
age = 30
formatted_str = f"My name is {name} and I am {age} years old."
print(formatted_str)
三、 字符串常用操作
1、访问字符
在Python中,最基本的数据结构是序列,序列中的每个元素被分配一个序号,即元素的位置,也称为索引,字符串其实就是一个字符元素组成的序列,通过索引来访问其中的字符,Python中的索引从0开始,也支持负索引(从右到左)。
python
s = "Hello"
print(s[0]) # 输出 'H'
print(s[-1]) # 输出 'o'
2、切片操作
使用切片来提取字符串的某一部分。
python
s = "Hello, World!"
print(s[0:5]) # 输出 'Hello',索引从0到4(不包括5)
print(s[7:]) # 输出 'World!',从索引7开始到结尾
print(s[:5]) # 输出 'Hello',从开头到索引4(不包括5)
print(s[-6:-1]) # 输出 'World',负索引从右往左数
3、字符串翻转
翻转字符串可以通过切片实现。
python
s = "Hello"
reversed_s = s[::-1]
print(reversed_s) # "olleH"
4、字符串连接
字符串可以通过 + 运算符或 join() 方法连接。
使用 + 运算符:
python
s1 = "Hello"
s2 = "World"
s3 = s1 + ", " + s2 # 拼接字符串
print(s3) # 输出 "Hello, World"
使用 join() 运算符:
python
s = " "
words = ["Hello", "World"]
result = s.join(words)
print(result) #输出 "Hello World"
5、字符串重复打印
使用 * 运算符来重复打印字符串。
python
s = "Hi! "
print(s * 3) # 输出 'Hi! Hi! Hi! '
6、获取字符串长度
使用 len() 函数来获取字符串的长度。
python
s = "Hello, World!"
print(len(s)) # 输出 13
7、字符串替换
字符串替换是指将字符串中的某些子字符串替换成其他子字符串。
方法 :str.replace(old, new[, count])
- old:要被替换的子字符串。
- new:替换成的新子字符串。
- count(可选):替换的次数。
python
s = "hello world"
new_s = s.replace("world", "Python")
print(new_s) # 输出: hello Python
8、字符串比较
在 Python 3 中,字符串比较可以通过直接使用标准的比较运算符来完成。Python 3 移除了 cmp()函数,取而代之的是使用常见的比较运算符,如 <,<=,==,>,>= 和 != 来比较字符串。
字符串比较运算符按照字典顺序(即基于字符的 Unicode 值)来比较字符串:
- ==: 判断两个字符串是否相等
- !=:判断两个字符串是否不相等
- <:判断第一个字符串是否按字典顺序小于第二个字符串
- <=: 判断第一个字符串是否按字典顺序小于或等于第二个字符串
- >:判断第一个字符串是否按字典顺序大于第二个字符串
- >=: 判断第一个字符串是否按字典顺序大于或等于第二个字符串
python
str1 = "apple"
str2 = "banana"
str3 = "apple"
# 使用比较运算符进行比较
print(str1 == str2) # False,"apple" 不等于 "banana"
print(str1 != str2) # True,"apple" 不等于 "banana"
print(str1 < str2) # True,"apple" 小于 "banana"
print(str1 > str2) # False,"apple" 不大于 "banana"
print(str1 <= str3) # True,"apple" 等于 "apple"
print(str1 >= str3) # True,"apple" 等于 "apple"
9、字符串查找
字符串查找用于寻找子字符串的位置。如果子字符串存在,返回其起始位置;如果子字符串不存在,返回 -1(find)或抛出异常(index)。
方法:
str.find(sub): 返回子字符串 sub 在字符串中的最低索引,如果未找到返回 -1。
str.index(sub): 与 find 类似,但如果未找到会抛出 ValueError。
python
s = "hello world"
position = s.find("world")
print(position) # 输出: 6
# 使用 index
position2 = s.index("world")
print(position2) # 输出: 6
10、字符串分割
字符串分割是将字符串根据某个分隔符切割成多个子字符串,并返回一个列表。
方法 :str.split(sep=None, maxsplit=-1)
sep:指定分隔符,默认为 None,表示按空白字符(空格、换行符、制表符等)分割。
maxsplit(可选):最多分割的次数。
python
s = "apple,banana,orange"
result = s.split(",")
print(result) # 输出: ['apple', 'banana', 'orange']
# 限制分割次数
result2 = s.split(",", 1)
print(result2) # 输出: ['apple', 'banana,orange']
11、字符串大小写转换
方法:
- str.lower():将字符串转换为小写。
- str.upper():将字符串转换为大写。
- str.capitalize():将字符串的首字母大写,其他字母小写。
- str.title():将字符串每个单词的首字母大写。
python
s = "hello world"
print(s.lower()) # 输出: hello world
print(s.upper()) # 输出: HELLO WORLD
print(s.capitalize()) # 输出: Hello world
print(s.title()) # 输出: Hello World
12、字符串去空格
字符串去空格是去除字符串开头和/或结尾的空白字符。
方法:
- str.strip():去除字符串两端的空白字符。
- str.lstrip():去除字符串左侧的空白字符。
- str.rstrip():去除字符串右侧的空白字符。
python
s = " hello world "
print(s.strip()) # 输出: hello world
print(s.lstrip()) # 输出: hello world
print(s.rstrip()) # 输出: hello world
13、其他
- str.isalnum() :是否全是字母和数字,并至少有一个字符;
- str.isalpha() :是否全是字母,并至少有一个字符;
- str.isdigit() :是否全是数字,并至少有一个字符;
- str.isspace() :是否全是空白字符,并至少有一个字符;
- str.count(targer,[min,max)):统计某个字符在字符串中出现的次数;
- str.startswith(target) :判断字符串是否以某个字符串开始;
- str.endswith(target) :判断字符串是否以某个字符串结尾 。