python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python字符串操作

Python中字符串常用操作技巧全解析(新手必看)

作者:青禾837

这篇文章带你从零掌握Python中字符串的定义、转义、格式化、索引、切片、遍历和常用方法,包含大量代码示例,助你轻松应对文本处理,快跟随小编一起学习起来吧

大家好,字符串是Python中使用频率最高的数据类型之一。无论是处理用户输入、解析文本文件,还是生成日志信息,都离不开它。这篇文章我们将系统性地学习字符串的七个核心方面,每个部分都配有代码示例,方便理解和查阅。

一、定义

字符串是由字符组成的序列,用引号括起来表示。

定义方式

# 单引号
name = '张三'

# 双引号
city = "北京"

# 三引号(支持多行)
desc = """这是一段
多行文本
可以换行写"""

# 三单引号同样支持多行
content = '''也是
多行文本'''

空字符串

empty1 = ""
empty2 = ''
empty3 = str()   # 使用 str() 构造方法

单引号和双引号在功能上完全等价,选择哪种主要看字符串内容是否包含引号:

# 字符串包含单引号,外层用双引号
msg1 = "I'm a student"

# 字符串包含双引号,外层用单引号
msg2 = '他说:"你好"'

# 或者使用转义符
msg3 = 'I\'m a student'

二、转义

转义字符用来表示一些特殊字符,以反斜杠 \ 开头。

常用转义字符

转义符含义
\'单引号
\"双引号
\\反斜杠本身
\n换行符
\t制表符(Tab键)
\r回车符
\b退格符
# 换行
print("第一行\n第二行")
# 输出:
# 第一行
# 第二行

# 制表符
print("姓名\t年龄\t城市")
print("张三\t25\t北京")

# 路径中的反斜杠需要转义
path = "C:\\Users\\Documents\\file.txt"

# 或者使用原始字符串(推荐)
path = r"C:\Users\Documents\file.txt"

原始字符串

在字符串前加 r,可以使字符串中的反斜杠不被解释为转义字符:

# 普通字符串
s1 = "C:\new\test"   # \n 会被解释为换行

# 原始字符串
s2 = r"C:\new\test"  # 原样输出 C:\new\test

原始字符串在写正则表达式、文件路径时非常实用。

三、格式化方法

格式化是指将变量值嵌入到字符串中,Python提供了多种方式。

1.%格式化(旧式)

name = "张三"
age = 25

print("我叫%s,今年%d岁" % (name, age))
# 我叫张三,今年25岁

常用占位符:%s 字符串、%d 整数、%f 浮点数。

2.format()方法

name = "张三"
age = 25

# 按位置
print("我叫{},今年{}岁".format(name, age))

# 按索引
print("我叫{1},今年{0}岁".format(age, name))

# 按变量名
print("我叫{name},今年{age}岁".format(name=name, age=age))

3. f-string(推荐,Python 3.6+)

name = "张三"
age = 25

print(f"我叫{name},今年{age}岁")
# 我叫张三,今年25岁

f-string 还可以嵌入表达式:

x, y = 3, 5
print(f"{x} + {y} = {x + y}")   # 3 + 5 = 8

price = 12.345
print(f"价格:{price:.2f}元")   # 价格:12.35元

f-string 是目前最推荐的格式化方式,可读性最好,性能也最高。

四、索引

字符串中的每个字符都有一个位置编号,可以通过索引来访问。

索引规则

正向索引:从 0 开始,从左到右

负向索引:从 -1 开始,从右到左

s = "Python"

# 正向索引
print(s[0])    # P
print(s[3])    # h
print(s[5])    # n

# 负向索引
print(s[-1])   # n
print(s[-3])   # h

索引对应关系

字符Python
正向012345
负向-6-5-4-3-2-1

索引越界

使用索引时,如果超出范围会报错:

s = "Python"
# print(s[10])   # IndexError: string index out of range

字符串是不可变类型,不能通过索引修改字符:

s = "Python"
# s[0] = "J"     # TypeError: 'str' object does not support item assignment

五、切片

切片是从字符串中截取子串的操作,语法为 [start:end:step]

基本语法

s = "Hello, World!"

# 截取一段
print(s[0:5])     # Hello   (包含索引0,不包含索引5)
print(s[7:12])    # World   (包含索引7,不包含索引12)

# 省略开始或结束
print(s[:5])      # Hello   (从开头到索引4)
print(s[7:])      # World!  (从索引7到末尾)
print(s[:])       # Hello, World!  (全部)

# 负索引切片
print(s[-6:-1])   # World   (从倒数第6到倒数第2)

步长

s = "abcdefghij"

print(s[::2])     # acegi   (从开头到末尾,每2个取1个)
print(s[1::2])    # bdfhj   (从索引1开始,每2个取1个)
print(s[::-1])    # jihgfedcba  (反转字符串)

切片的特点

s = "abc"
print(s[0:10])    # abc   (不会报错)
print(s[10:20])   # ''    (返回空字符串)

六、遍历

遍历字符串的三种常用方式。

1. 直接遍历字符

s = "Python"

for char in s:
    print(char)
# 输出:P y t h o n (每行一个)

2. 通过索引遍历

s = "Python"

for i in range(len(s)):
    print(s[i])

3.enumerate()同时获取索引和值

s = "Python"

for index, char in enumerate(s):
    print(f"索引{index}:{char}")
# 索引0:P
# 索引1:y
# 索引2:t
# 索引3:h
# 索引4:o
# 索引5:n

4. 判断字符类型

遍历时经常配合字符判断方法:

s = "Hello123"

for char in s:
    if char.isdigit():
        print(f"{char} 是数字")
    elif char.isalpha():
        print(f"{char} 是字母")

七、常用方法

字符串提供了大量内置方法,这里按功能分类整理。

1. 大小写转换

方法说明示例
upper()全部转大写"hello".upper() → "HELLO"
lower()全部转小写"HELLO".lower() → "hello"
capitalize()首字母大写"hello".capitalize() → "Hello"
title()每个单词首字母大写"hello world".title() → "Hello World"
swapcase()大小写互换"Hello".swapcase() → "hELLO"
text = "python is FUN"
print(text.upper())      # PYTHON IS FUN
print(text.lower())      # python is fun
print(text.capitalize()) # Python is fun

2. 去除空白

方法说明
strip()去除两端空白字符(空格、换行、制表符)
lstrip()去除左端空白
rstrip()去除右端空白
text = "  hello  \n"
print(text.strip())     # "hello"
print(text.lstrip())    # "hello  \n"
print(text.rstrip())    # "  hello"

也可以指定要去除的字符:

text = "!!!hello!!!"
print(text.strip("!"))   # "hello"

3. 查找与判断

方法说明
find(sub)返回第一个匹配的子串起始索引,找不到返回 -1
index(sub)与 find 相同,但找不到会抛出异常
rfind(sub)从右向左查找
startswith(prefix)是否以指定前缀开头
endswith(suffix)是否以指定后缀结尾
count(sub)统计子串出现次数
s = "hello world hello"

print(s.find("world"))    # 6
print(s.find("python"))   # -1
print(s.index("world"))   # 6
# print(s.index("python")) # ValueError

print(s.startswith("hello"))  # True
print(s.endswith("hello"))    # True
print(s.count("hello"))       # 2

4. 拆分与拼接

方法说明
split(sep)按分隔符拆分成列表
rsplit(sep)从右向左拆分
splitlines()按换行符拆分
join(iterable)将可迭代对象拼接成字符串
# split
data = "apple,banana,orange"
result = data.split(",")
print(result)   # ['apple', 'banana', 'orange']

# split 可以指定最大拆分次数
data = "a,b,c,d"
print(data.split(",", 2))  # ['a', 'b', 'c,d']

# splitlines
text = "第一行\n第二行\n第三行"
print(text.splitlines())   # ['第一行', '第二行', '第三行']

# join
items = ['a', 'b', 'c']
print("-".join(items))     # 'a-b-c'

5. 替换

方法说明
replace(old, new, count)替换子串,可指定替换次数
s = "hello world hello"

print(s.replace("hello", "hi"))          # hi world hi
print(s.replace("hello", "hi", 1))       # hi world hello

6. 对齐与填充

方法说明
center(width, fillchar)居中
ljust(width, fillchar)左对齐
rjust(width, fillchar)右对齐
zfill(width)右对齐,用0填充
s = "hello"

print(s.center(11, "*"))   # "***hello***"
print(s.ljust(10, "-"))    # "hello-----"
print(s.rjust(10, "-"))    # "-----hello"
print(s.zfill(10))         # "00000hello"

7. 判断类型

方法说明
isalpha()是否全是字母
isdigit()是否全是数字
isalnum()是否全是字母或数字
isspace()是否全是空白字符
islower()是否全是小写
isupper()是否全是大写
istitle()是否符合标题格式
print("hello".isalpha())    # True
print("123".isdigit())      # True
print("hello123".isalnum()) # True
print("   ".isspace())      # True
print("Hello".istitle())    # True

八、总结

字符串在Python中占据重要地位,掌握好以下几个维度即可应对绝大多数场景:

知识点核心要点
定义单引号、双引号、三引号
转义\n\t\\,原始字符串 r""
格式化%format()、f-string(推荐)
索引正向从0开始,负向从-1开始
切片[start:end:step],左闭右开
遍历forrangeenumerate()
常用方法大小写、去空白、查找、拆分拼接、替换等

字符串的各个方法不需要死记硬背,多写代码自然就熟悉了。如果遇到不记得的方法,可以用 dir(str) 查看所有方法,或者用 help(str.method) 查看详细说明。

到此这篇关于Python中字符串常用操作技巧全解析(新手必看)的文章就介绍到这了,更多相关Python字符串操作内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文