在Python编程中,字符串是最常用的数据类型。字符串就是文本信息,比如姓名、地址、文章内容等。掌握字符串操作是编程的基础。
创建字符串很简单,用单引号或双引号把文字括起来就行:
name = '张三'
city = "北京"
message = 'Hello World'Python可以访问字符串中的单个字符或某一部分。字符串中的每个字符都有位置编号,从0开始。
text = "Python编程"
print(text[0]) # 输出:P
print(text[1]) # 输出:y
print(text[0:6]) # 输出:Python
print(text[6:]) # 输出:编程位置编号也可以用负数,-1表示最后一个字符:
text = "Hello"
print(text[-1]) # 输出:o
print(text[-2]) # 输出:l字符串创建后不能直接修改,但可以创建新的字符串:
original = "Hello World"
new_string = original[:6] + "Python"
print(new_string) # 输出:Hello Python有些特殊字符需要用反斜杠\来表示:
print('这是单引号:\'') # 输出:这是单引号:'
print("这是双引号:\"") # 输出:这是双引号:"
print("第一行\n第二行") # 输出两行文字
print("姓名\t年龄") # 输出:姓名 年龄常用的转义字符:
\n:换行
\t:制表符(Tab)
\\:反斜杠
\':单引号
\":双引号
在字符串前加r,可以忽略转义字符:
print(r"换行符:\n") # 输出:换行符:\n
print(r"路径:C:\new folder") # 输出:路径:C:\new folder字符串支持多种运算:
str1 = "Hello"
str2 = "Python"
print(str1 + str2) # 连接:HelloPython
print(str1 * 3) # 重复:HelloHelloHello
print('H' in str1) # 检查包含:True
print('h' in str1) # 检查包含:False把变量值插入到字符串中有几种方法:
使用%操作符(传统方法):
name = "小明"
age = 12
print("我叫%s,今年%d岁" % (name, age))使用format方法:
name = "小红"
score = 95.5
print("{}的成绩是{:.1f}分".format(name, score))使用f-string(推荐):
name = "小刚"
age = 15
print(f"{name}今年{age}岁")
# 还可以进行计算
a = 5
b = 3
print(f"{a} + {b} = {a + b}") # 输出:5 + 3 = 8用三个引号创建多行字符串:
letter = """
亲爱的用户:
欢迎使用我们的服务。
如有问题,请联系客服。
此致
敬礼!
"""
print(letter)Python提供了很多处理字符串的方法:
text = "hello world"
# 大小写转换
print(text.upper()) # HELLO WORLD
print(text.capitalize()) # Hello world
# 查找和替换
print(text.find("world")) # 6
print(text.replace("world", "Python")) # hello Python
# 去除空格
text_with_spaces = " hello "
print(text_with_spaces.strip()) # hello
# 分割字符串
sentence = "苹果,香蕉,橙子"
fruits = sentence.split(",")
print(fruits) # ['苹果', '香蕉', '橙子']# 检查字符串特性
print("hello".isalpha()) # True,全是字母
print("123".isdigit()) # True,全是数字
print("abc123".isalnum()) # True,字母或数字
# 对齐文本
print("标题".center(20, "=")) # =========标题=========
# 统计出现次数
text = "apple banana apple"
print(text.count("apple")) # 2
# 检查开头和结尾
filename = "document.pdf"
print(filename.endswith(".pdf")) # True# 处理用户输入
username = input("请输入用户名:").strip()
if len(username) < 3:
print("用户名太短")
else:
print(f"欢迎,{username}!")
# 文件路径处理
path = r"C:\Users\Documents\file.txt"
filename = path.split("\\")[-1]
print(f"文件名:{filename}")
# 生成报告
students = ["张三", "李四", "王五"]
scores = [85, 92, 78]
report = "成绩报告:\n"
for name, score in zip(students, scores):
report += f"{name:5}:{score:3}分\n"
print(report)处理中文或特殊字符时需要注意编码:
text = "你好,世界"
encoded = text.encode("utf-8") # 转换为字节
decoded = encoded.decode("utf-8") # 转换回字符串
print(decoded) # 你好,世界| 符 号 | 描述 |
|---|---|
| %c | 格式化字符及其ASCII码 |
| %s | 格式化字符串 |
| %d | 格式化整数 |
| %u | 格式化无符号整型 |
| %o | 格式化无符号八进制数 |
| %x | 格式化无符号十六进制数 |
| %X | 格式化无符号十六进制数(大写) |
| %f | 格式化浮点数字,可指定小数点后的精度 |
| %e | 用科学计数法格式化浮点数 |
| %E | 作用同%e,用科学计数法格式化浮点数 |
| %g | %f和%e的简写 |
| %G | %f 和 %E 的简写 |
| %p | 用十六进制数格式化变量的地址 |
| 符号 | 功能 |
|---|---|
| * | 定义宽度或者小数点精度 |
| - | 用做左对齐 |
| + | 在正数前面显示加号( + ) |
| <sp> | 在正数前面显示空格 |
| # | 在八进制数前面显示零('0'),在十六进制前面显示'0x'或者'0X'(取决于用的是'x'还是'X') |
| 0 | 显示的数字前面填充'0'而不是默认的空格 |
| % | '%%'输出一个单一的'%' |
| (var) | 映射变量(字典参数) |
| m.n. | m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话) |
Python 的字符串常用内建函数如下:
| 序号 | 方法及描述 |
|---|---|
| 1 | capitalize() |
| 2 | center(width, fillchar) 返回一个指定的宽度 width 居中的字符串,fillchar 为填充的字符,默认为空格。 |
| 3 | count(str, beg= 0,end=len(string)) 返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数 |
| 4 | bytes.decode(encoding="utf-8", errors="strict") Python3 中没有 decode 方法,但我们可以使用 bytes 对象的 decode() 方法来解码给定的 bytes 对象,这个 bytes 对象可以由 str.encode() 来编码返回。 |
| 5 | encode(encoding='UTF-8',errors='strict') 以 encoding 指定的编码格式编码字符串,如果出错默认报一个ValueError 的异常,除非 errors 指定的是'ignore'或者'replace' |
| 6 | endswith(suffix, beg=0, end=len(string)) 检查字符串是否以 suffix 结束,如果 beg 或者 end 指定则检查指定的范围内是否以 suffix 结束,如果是,返回 True,否则返回 False。 |
| 7 | expandtabs(tabsize=8) 把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8 。 |
| 8 | find(str, beg=0, end=len(string)) 检测 str 是否包含在字符串中,如果指定范围 beg 和 end ,则检查是否包含在指定范围内,如果包含返回开始的索引值,否则返回-1 |
| 9 | index(str, beg=0, end=len(string)) 跟find()方法一样,只不过如果str不在字符串中会报一个异常。 |
| 10 | isalnum() 检查字符串是否由字母和数字组成,即字符串中的所有字符都是字母或数字。如果字符串至少有一个字符,并且所有字符都是字母或数字,则返回 True;否则返回 False。 |
| 11 | isalpha() 如果字符串至少有一个字符并且所有字符都是字母或中文字则返回 True, 否则返回 False |
| 12 | isdigit() 如果字符串只包含数字则返回 True 否则返回 False.. |
| 13 | islower() 如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False |
| 14 | isnumeric() 如果字符串中只包含数字字符,则返回 True,否则返回 False |
| 15 | isspace() 如果字符串中只包含空白,则返回 True,否则返回 False. |
| 16 | istitle() 如果字符串是标题化的(见 title())则返回 True,否则返回 False |
| 17 | isupper() 如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False |
| 18 | join(seq) 以指定字符串作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串 |
| 19 | len(string) 返回字符串长度 |
| 20 | ljust(width[, fillchar]) 返回一个原字符串左对齐,并使用 fillchar 填充至长度 width 的新字符串,fillchar 默认为空格。 |
| 21 | lower() 转换字符串中所有大写字符为小写. |
| 22 | lstrip() 截掉字符串左边的空格或指定字符。 |
| 23 | maketrans() 创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。 |
| 24 | max(str) 返回字符串 str 中最大的字母。 |
| 25 | min(str) 返回字符串 str 中最小的字母。 |
| 26 | replace(old, new [, max]) 把 将字符串中的 old 替换成 new,如果 max 指定,则替换不超过 max 次。 |
| 27 | rfind(str, beg=0,end=len(string)) 类似于 find()函数,不过是从右边开始查找. |
| 28 | rindex( str, beg=0, end=len(string)) 类似于 index(),不过是从右边开始. |
| 29 | rjust(width,[, fillchar]) 返回一个原字符串右对齐,并使用fillchar(默认空格)填充至长度 width 的新字符串 |
| 30 | rstrip() 删除字符串末尾的空格或指定字符。 |
| 31 | split(str="", num=string.count(str)) 以 str 为分隔符截取字符串,如果 num 有指定值,则仅截取 num+1 个子字符串 |
| 32 | splitlines([keepends]) 按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。 |
| 33 | startswith(substr, beg=0,end=len(string)) 检查字符串是否是以指定子字符串 substr 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查。 |
| 34 | strip([chars]) 在字符串上执行 lstrip()和 rstrip() |
| 35 | swapcase() 将字符串中大写转换为小写,小写转换为大写 |
| 36 | title() 返回"标题化"的字符串,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle()) |
| 37 | translate(table, deletechars="") 根据 table 给出的表(包含 256 个字符)转换 string 的字符, 要过滤掉的字符放到 deletechars 参数中 |
| 38 | upper() 转换字符串中的小写字母为大写 |
| 39 | zfill (width) 返回长度为 width 的字符串,原字符串右对齐,前面填充0 |
| 40 | isdecimal() 检查字符串是否只包含十进制字符,如果是返回 true,否则返回 false。 |
要熟练掌握字符串操作,建议:
多练习字符串切片和索引
熟悉常用的字符串方法
掌握f-string格式化方法
在实际项目中应用字符串处理
记住,字符串处理是编程中的常见任务。开始可能觉得方法太多,但随着实践的增加,你会自然掌握这些技能。编程重在实践,多写代码就能进步。
本文内容仅供个人学习/研究/参考使用,不构成任何决策建议或专业指导。分享/转载时请标明原文来源,同时请勿将内容用于商业售卖、虚假宣传等非学习用途哦~感谢您的理解与支持!