Python字符串处理全解析
立即解锁
发布时间: 2025-08-29 10:27:55 阅读量: 18 订阅数: 39 AIGC 


Python数据科学实战
# Python 字符串处理全解析
## 1. 字符串格式化
### 1.1 呈现类型
在 Python 中,使用 f - 字符串进行基本的字符串格式化时,如果不指定类型,Python 会默认将值显示为字符串。以下是一些常见的呈现类型:
- **整数(Integers)**:`d` 呈现类型将整数值格式化为字符串。还有 `b`、`o` 和 `x` 或 `X` 等整数呈现类型,分别用于以二进制、八进制或十六进制数系统格式化整数。
- **字符(Characters)**:`c` 呈现类型将整数字符代码格式化为相应的字符。
- **字符串(Strings)**:`s` 呈现类型是默认的。如果显式指定 `s`,要格式化的值必须是引用字符串的变量、产生字符串的表达式或字符串字面量。如果不指定呈现类型,非字符串值(如整数)会被转换为字符串。
- **浮点和十进制值(Floating - Point and Decimal Values)**:`f` 呈现类型用于格式化浮点和十进制值。对于极大或极小的此类值,可以使用指数(科学)记数法(`e` 或 `E`)更紧凑地格式化值。
示例代码如下:
```python
# 浮点值保留两位小数
print(f'{17.489:.2f}')
# 整数格式化
print(f'{10:d}')
# 字符格式化
print(f'{65:c} {97:c}')
# 字符串格式化
print(f'{"hello":s} {7}')
# 浮点值的指数表示
from decimal import Decimal
print(f'{Decimal("10000000000000000000000000.0"):.3f}')
print(f'{Decimal("10000000000000000000000000.0"):.3e}')
```
### 1.2 字段宽度和对齐
Python 默认右对齐数字,左对齐其他值(如字符串)。可以使用 `<` 和 `>` 显式指定左对齐和右对齐,使用 `^` 进行居中对齐。
示例代码如下:
```python
# 右对齐整数
print(f'[{27:10d}]')
# 右对齐浮点数
print(f'[{3.5:10f}]')
# 左对齐字符串
print(f'[{"hello":10}]')
# 左对齐整数
print(f'[{27:<15d}]')
# 左对齐浮点数
print(f'[{3.5:<15f}]')
# 右对齐字符串
print(f'[{"hello":>15}]')
# 居中对齐整数
print(f'[{27:^7d}]')
# 居中对齐浮点数
print(f'[{3.5:^7.1f}]')
# 居中对齐字符串
print(f'[{"hello":^7}]')
```
### 1.3 数字格式化
- **带符号的正数格式化**:在字段宽度前加 `+` 表示正数前应加 `+` 号,负数始终以 `-` 开头。在字段宽度前(如果有 `+` 号则在其后)加 `0` 可以用 `0` 填充剩余字符。
- **正数符号位置使用空格**:用空格表示正数在符号位置显示空格,这有助于对齐正数和负数以便显示。
- **数字分组**:使用逗号 `,` 可以格式化带有千位分隔符的数字。
示例代码如下:
```python
# 带 + 号的正数格式化
print(f'[{27:+10d}]')
# 用 0 填充的带 + 号正数格式化
print(f'[{27:+010d}]')
# 正数符号位置使用空格
print(f'{27:d}\n{27: d}\n{-27: d}')
# 数字分组
print(f'{12345678:,d}')
print(f'{123456.78:,.2f}')
```
### 1.4 字符串的 format 方法
在 Python 3.6 之前,使用字符串的 `format` 方法进行格式化。f - 字符串格式化基于 `format` 方法的功能。虽然推荐使用较新的 f - 字符串格式化,但仍需了解 `format` 方法,因为在早期的代码中会经常遇到。
- **单个占位符**:
```python
print('{:.2f}'.format(17.489))
```
- **多个占位符**:
```python
print('{} {}'.format('Amanda', 'Cyan'))
```
- **按位置编号引用参数**:
```python
print('{0} {0} {1}'.format('Happy', 'Birthday'))
```
- **引用关键字参数**:
```python
print('{first} {last}'.format(first='Amanda', last='Gray'))
```
## 2. 字符串的拼接和重复
在 Python 中,可以使用 `+` 运算符拼接字符串,使用 `*` 运算符重复字符串,也可以使用增强赋值操作。由于字符串是不可变的,每次操作都会将新的字符串对象赋值给变量。
示例代码如下:
```python
s1 = 'happy'
s2 = 'birthday'
s1 += ' ' + s2
print(s1)
symbol = '>'
symbol *= 5
print(symbol)
```
## 3. 去除字符串的空白字符
有几种字符串方法可用于去除字符串两端的空白字符,每种方法都返回一个新字符串,而不修改原始字符串。
- **去除首尾空白字符**:使用 `strip` 方法。
- **去除前导空白字符**:使用 `lstrip` 方法。
- **去除尾随空白字符**:使用 `rstrip` 方法。
示例代码如下:
```python
sentence = '\t \n This is a test string. \t\t \n'
print(sentence.strip())
print(sentence.lstrip())
print(sentence.rstrip())
```
## 4. 改变字符大小写
可以使用 `lower` 和 `upper` 方法将字符串转换为全小写或全大写字母,还可以使用 `capitalize` 和 `title` 方法改变字符串的大小写。
- **仅大写字符串的首字符**:使用 `capitalize` 方法。
- **大写字符串中每个单词的首字符**:使用 `title` 方法。
示例代码如下:
```python
print('happy birthday'.capitalize())
print('strings: a deeper look'.title())
```
## 5. 字符串的比较运算符
字符串可以使用比较运算符进行比较。字符串是基于其底层整数值进行比较的,因此大写字母比小写字母小,因为大写字母的整数值较低。
示例代码如下:
```python
print(f'A: {ord("A")}; a: {ord("a")}')
print('Orange' == 'orange')
print('Orange' != 'orange')
print('Orange' < 'orange')
print('Orange' <= 'orange')
print('Orange' > 'orange')
print('Orange' >= 'orange')
```
## 6. 搜索子字符串
### 6.1 计算出现次数
`count` 方法返回其参数在调用该方法的字符串中出现的次数。可以指定起始索引和结束索引来限制搜索范围。
示例代码如下:
```python
sentence = 'to be or not to be that is the question'
print(sentence.count('to'))
print(sentence.count('to', 12))
print(sentence.count('that', 12, 25))
```
### 6.2 定位子字符串
- `index` 方法搜索字符串中的子字符串并返回首次找到该子字符串的索引,否则会引发 `ValueError`。
- `rindex` 方法与 `index` 方法相同,但从字符串末尾开始搜索并返回最后找到该子字符串的索引,否则会引发 `ValueError`。
- `find` 和 `rfind` 方法与 `index` 和 `rindex` 方法功能相同,但如果未找到子字符串,返回 `-1` 而不是引发 `ValueError`。
### 6.3 判断字符串是否包含子字符串
使用 `in` 或 `not in` 运算符判断字符串是否包含子字符串。
### 6.4 判断字符串是否以子字符串开头或结尾
`startswith` 和 `endswith` 方法分别用于判断字符串是否以指定的子字符串开头或结尾。
示例代码如下:
```python
print(sentence.index('be'))
print(sentence.rindex('be'))
print('that' in sentence)
print('THAT' in sentence)
print('THAT' not in sentence)
print(sentence.startswith('to'))
print(sentence.startswith('be'))
print(sentence.endswith('question'))
print(sentence.endswith('quest'))
```
## 7. 替换子字符串
`replace` 方法用于定位子字符串并替换其值。该方法接受两个子字符串,在字符串中搜索第一个参数的子字符串,并将每个出现的位置替换为第二个参数的子字符串,返回包含结果的新字符串。还可以提供一个可选的第三个参数,指定要执行的最大替换
0
0
复制全文
相关推荐










