Python字符串大总结

这篇博客详细介绍了Python字符串的使用,包括常见转义字符、字符串切片、字符串方法、字符串函数、字符串格式化以及如何将列表转为字符串。重点讨论了split方法、join方法以及字符串格式化的多种方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

字符串是由字符组成的序列。可以使用一对单引号或一对双引号来创建字符串。

使用 + 可以对字符串之间进行首尾连接,中间没有空格。使用 * 可以复制字符串,让字符串重复若干次。

常见转义字符

转义字符含义
\n换行符
\t横向制表符
\0空值
\’单引号 ’
\"双引号 "
\\\

空白泛指任何非打印字符,如空格、制表符\t、换行符\n。可以在字符串中添加这些空白,如下。

print('languages:\n\tc\n\tpython\n\tjavascript')

输出结果:

languages:
	c
	python
	javascript

字符串切片

字符串可通过方括号 [] 运算符来获取相应索引位置的字符。

Python有两种索引方式:
(1)正序,n 个字符,从 0 开始到 n-1
(2)逆序,n 个字符,从 -1 开始到 -n

切片共有 3 个参数,用冒号分隔开。第一个参数表示切片开始位置(默认为 0 ),第二个参数表示切片截止位置(但不包含该位置,默认为字符串长度),第三个参数表示切片的步长(默认为 1 )。第三个参数步长可以省略。

s = '0123456789'
print(s[::-1])
print(s[-3:-1])
print(s[-3:])
print(s[:-5])
print(s[:-5:-3])  # 逆序截取
print(s[:-5:-1])

输出结果:

9876543210
78
789
01234
96
9876

字符串方法

作用代码
删除末尾的所有空白(不能保存到str中,需要关联到str才行,同下)str.rstrip()
删除开头的所有空白str.lstrip()
删除开头末尾两边的所有空白(不删中间)str.strip()
全部大写str.upper()
全部小写str.lower()
所有单词仅首字母大写str.title()
返回某字符 a 在 str 中出现次数str.count(a)
返回某字符 a 在 str 中的索引值,若 a 不在 str 中则返回 -1str.find(a)
返回某字符 a 在 str 中的索引值,若 a 不在 str 中则报错str.index(a)
以指定字符串 a 作为分隔符,分隔开 s 中所有元素并合并为一个新的字符串,s 可以为字符串或列表等,注意 join 仅接受字符串值!a.join(s)
以指定分割符 a 分割字符串,返回列表类型str.split(a)
检查字符串是否以 a 开头,是则返回true,否则返回false。如果beg和end指定值,则在指定范围内检查str.startswith(a, beg = 0,end = len(str))
如果字符串只包含数字,则返回 Truestr.isdigit()或者str.isnumeric()
如果字符串至少有一个字符,且都是字母,则返回 Truestr.isalpha()
如果字符串至少有一个字符,且都是字母或者数字,则返回 Truestr.isalnum()
'a'.join('bcdfg')
>>>'bacadafag'

'!'.join(['b', 'a', 'p', 'v'])
>>>'b!a!p!v'

one = 'apple pear banana'
one.split(' ')   # 按照空格进行分割
>>>['apple', 'pear', 'banana']

two = 'x,y,z,h'
two.split(',')   #按照逗号进行分割
>>>['x', 'y', 'z', 'h']

name = ['张伯', '张仲','王五', '张叔', '李四']
for i in name:
    if i.startswith('张'):
        print(i, end = ' ')
>>>张伯 张仲 张叔 

注:split 方法经常在处理文本数据时使用!
在以某分隔符分隔输出时,join 方法的一种应用:

ls = ['2', '20', '200', '2000', '20000']
print(",".join(ls))
>>>2,20,200,2000,20000

但是要注意上面这个列表 ls 的各个值必须为字符串,如果为数字会出错,例如:

ls = [2,20,200,2000,20000]
print(",".join(ls))
>>>TypeError          Traceback (most recent call last)
<ipython-input-39-4220d7098a83> in <module>
      1 ls = [2,20,200,2000,20000]
----> 2 print(",".join(ls))

TypeError: sequence item 0: expected str instance, int found

字符串函数

函数功能
ord(str)将字符转换为对应的ASCII值
chr(str)将ASCII值转换为对应的字符
len(str)返回字符串长度
max(str)返回字符串中最大的字符
min(str)返回字符串中最小的字符

常用的ASCII值和控制字符转换:

print('ASCII值为179对应的字符为:',chr(179))
print('ASCII值为178对应的字符为:',chr(178))
print('ASCII值为65对应的字符为:',chr(65))
print('ASCII值为97对应的字符为:',chr(97))
>>>ASCII值为179对应的字符为: ³
ASCII值为178对应的字符为: ²
ASCII值为65对应的字符为: A
ASCII值为97对应的字符为: a


len(chr(179))
>>>1

字符串格式化

通用格式:
{ <参数序号> : <格式控制标记> } . format( <逗号分隔的参数> )

其中参数序号表示要对“逗号分隔的参数”中相应位置的参数进行格式化。

格式控制标记的先后顺序为:
1.填充字符,例如*、@、#等
2.对齐方式,<左对齐、>右对齐、^居中对齐
3.宽度,当前槽的设定输出字符宽度
4.千位分隔符(也就是英文逗号,)
5.精度(格式为" .精度 ",小数点开头),对于浮点数,精度表示小数部分输出的有效位数,例如“.2”表示保留两位小数;对于字符串,精度表示输出的最大长度。
6.整数类型/浮点数类型

其中,整数类型有:b二进制,c字符形式(Unicode编码形式),d十进制,o八进制,x小写十六进制,X大写十六进制。

浮点数类型有:e科学计数法(小e形式),E科学计数法(大E形式),f通常形式的小数,%百分数形式

n = 12345
print("{:@>30,}".format(n))

输出结果:

@@@@@@@@@@@@@@@@@@@@@@@@12,345

字符串格式化还有一种简写的格式:
f " { 需要格式化的参数 : 格式控制标记 }"

n = 12345
print(f"{n:@>30,}")

输出结果:

@@@@@@@@@@@@@@@@@@@@@@@@12,345

(两种方式格式化结果都是一样的)

列表转为字符串

方法一:使用 .join() 方法

lis = ['a','b','c','d','e']
s = ''.join(lis)
s2 = ','.join(lis)
print(s)
print(s2)
print(type(s))
print(type(s2))
>>>abcde
a,b,c,d,e
<class 'str'>
<class 'str'>

方法二:结合使用map函数
join()方法仅接受字符串值,因此在将python列表转换为字符串之前,我们使用map()来将这些int值转换为字符串。

lis2 = ['a','b','c','d','e',1, 2, 3]
s3 = ''.join(map(str,lis))
print(s3)
>>>abcde123

方法三:创建空字符串,使用 循环 和 str()

lis2 = ['a','b','c','d','e',1, 2, 3]
new = ''
for i in lis2:
    new += str(i)
print(new)
>>>abcde123
### Python 字符串方法总结与使用指南 #### 一、基本概念 Python 中的字符串是一种不可变的数据类型,用于存储和处理文本信息。它们支持多种内置方法来进行高效的字符串操作[^1]。 --- #### 二、常见字符串方法及其功能 以下是 Python 字符串的一些核心方法: 1. **查找与定位** - `str.find(sub[, start[, end]])`:返回子字符串第一次出现的位置;如果未找到,则返回 `-1`。 - `str.rfind(sub[, start[, end]])`:返回子字符串最后一次出现的位置;如果未找到,则返回 `-1`。 - `str.index(sub[, start[, end]])`:类似于 `find()` 方法,但如果找不到则会抛出异常。 - `str.rindex(sub[, start[, end]])`:类似于 `rfind()` 方法,但如果找不到则会抛出异常[^2]。 2. **小写转换** - `str.lower()`:将字符串中的所有写字母转换为小写。 - `str.upper()`:将字符串中的所有小写字母转换为写。 - `str.capitalize()`:将字符串的第一个字符转换为写,其余部分转换为小写。 - `str.title()`:将字符串中的每个单词首字母写。 3. **分割与连接** - `str.split(sep=None, maxsplit=-1)`:按照指定分隔符拆分字符串并返回列表。 - `str.join(iterable)`:将序列中的元素以指定的字符连接成一个新的字符串。 4. **替换与修改** - `str.replace(old, new[, count])`:将字符串中的某些子字符串替换为新的子字符串。 - `str.strip([chars])`:移除字符串两端的空白字符或其他指定字符。 - `str.lstrip([chars])` 和 `str.rstrip([chars])`:分别移除左侧或右侧的空白字符。 5. **判断类方法** - `str.startswith(prefix[, start[, end]])`:检查字符串是否以指定前缀开头。 - `str.endswith(suffix[, start[, end]])`:检查字符串是否以指定后缀结尾。 - `str.isalpha()`:检查字符串是否只包含字母。 - `str.isdigit()`:检查字符串是否只包含数字。 - `str.isalnum()`:检查字符串是否只包含字母和数字。 6. **格式化** - 使用 `%` 进行简单格式化:适用于较老版本的 Python[^4]。 ```python name = "Alice" age = 25 message = "Name: %s, Age: %d" % (name, age) print(message) # 输出: Name: Alice, Age: 25 ``` - 使用 `str.format()` 或者 f-string 实现更现代的格式化方式[^3]: ```python name = "Bob" age = 30 message_format = "Name: {}, Age: {}".format(name, age) message_f_string = f"Name: {name}, Age: {age}" ``` 7. **其他实用方法** - `str.count(sub[, start[, end]])`:统计子字符串在原字符串中出现的次数。 - `str.encode(encoding='utf-8', errors='strict')`:将字符串编码为字节对象。 - `str.decode(encoding='utf-8', errors='strict')`:解码字节对象为字符串(注意此方法仅限于字节对象)。 --- #### 三、字符串到 JSON 转换 当需要将字符串转化为 JSON 数据结构时,可以借助 Python 的标准库 `json` 模块完成这一过程[^5]: ```python import json data_str = '{"key": "value"}' try: data_json = json.loads(data_str) print(data_json["key"]) # 输出: value except json.JSONDecodeError as e: print(f"JSON 解析错误: {e}") ``` --- #### 四、注意事项 1. 字符串是不可变的对象,因此任何对其的操作都会生成新字符串而非修改原始字符串。 2. 对于复杂的正则表达式匹配任务,建议引入 `re` 模块扩展能力。 3. 在涉及字符串拼接的情况下,推荐使用 `''.join(list_of_strings)` 来代替连续的加号 (`+`) 操作,从而提高效率。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值