1. 字符串的创建与表示
在Python中,字符串是一种不可变序列类型,用于表示文本数据。创建字符串有多种方式:
1、使用单引号创建字符串str1 = '数据分析与可视化'print(str1) # 输出:数据分析与可视化2、使用双引号创建字符串str2 = "机器学习模型训练"print(str2) # 输出:机器学习模型训练3、使用三引号创建多行字符串str3 = '''这是一个多行字符串示例可用于文档字符串'''print(str3)4、使用三引号创建带格式的字符串str4 = """用户信息:姓名:张三年龄:25职业:算法工程师"""print(str4)
2. 字符串访问与切片
字符串支持索引和切片操作,可以灵活访问子字符串:
text = "深度学习框架TensorFlow"1、通过索引 [] 获取单个字符print(text[0]) # 输出:深print(text[5]) # 输出:架 print(text[-1]) # 输出:w(最后一个字符)print(text[-3]) # 输出:l(倒数第三个字符)2、字符串切片 [start:end:step]print(text[2:6]) # 输出:学习框架print(text[:4]) # 输出:深度学习 print(text[7:]) # 输出:ensorFlowprint(text[::2]) # 输出:深学框TnoFo(步长为2)print(text[::-1]) # 输出:wolFrosneT架框习学度深(反转字符串)3、获取字符串长度length = len(text)print(f"字符串长度:{length}") # 输出:字符串长度:16
3. 字符串基本操作
3.1 字符串拼接
1、使用加号拼接first_name = "张"last_name = "三丰"full_name = last_name + first_nameprint(full_name) # 输出:三丰张2、使用join方法拼接words = ["自然语言", "处理", "技术"]sentence = " ".join(words)print(sentence) # 输出:自然语言 处理 技术3、使用format拼接framework = "PyTorch"version = "2.0"info = "框架:{} 版本:{}".format(framework, version)print(info) # 输出:框架:PyTorch 版本:2.04、直接拼接(相邻字符串自动合并)long_text = "这是" "一个" "自动合并" "的字符串"print(long_text) # 输出:这是一个自动合并的字符串
3.2 字符串重复
1、使用乘法操作符重复字符串separator = "=" * 30print(separator) # 输出:==============================warning = "注意!" * 3print(warning) # 输出:注意!注意!注意!2、创建进度条效果progress = "[" + "#" * 20 + "]"print(progress) # 输出:[####################]
3.3 成员判断( in/not in)
a = "python world"if( "p" in a) : print("p 在变量 a 中")else : print("p 不在变量 a 中")if( "w" not in a) : print("w 不在变量 a 中")else : print("w 在变量 a 中")输出:p 在变量 a 中w 在变量 a 中
3.4 原始字符串(r/R)
原始字符串:所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。 原始字符串除在字符串的第一个引号前加上字母 r(可以大小写)以外,与普通字符串有着几乎完全相同的语法。
普通字符串 - \n 会被转义为换行符normal_str = "第一行\n第二行"print("普通字符串:")print(normal_str)原始字符串 - \n 被当作普通字符raw_str = r"第一行\n第二行"print("\n原始字符串:")print(raw_str)
如何创建原始字符串
在字符串前加 r 或 R 前缀即可:
使用小写 rpath1 = r"C:\Windows\System32"print(path1) # 输出: C:\Windows\System32使用大写 R path2 = R"C:\Program Files\Python"print(path2) # 输出: C:\Program Files\Python各种引号都可以用str1 = r'这是一个原始字符串'str2 = r"这也是原始字符串"str3 = r'''这还是原始字符串'''
4. 字符串常用方法
4.1 大小写转换
text = "Python Programming"① upper(): 将字符串所有字符转换为大写print(text.upper()) # 输出:PYTHON PROGRAMMING② lower(): 将字符串所有字符转换为小写print(text.lower()) # 输出:python programming③ title(): 将字符串每个单词的首字母大写,其余小写print(text.title()) # 输出:Python Programming④ capitalize(): 将字符串第一个字符大写,其余小写print(text.capitalize()) # 输出:Python programming⑤ swapcase(): 将字符串中大写转换为小写,小写转换为大写print(text.swapcase()) # 输出:pYTHON pROGRAMMING
4.2 查找与替换
sentence = "Python是一种优秀的编程语言,Python简单易学"1、查找① find(): 返回子字符串第一次出现的索引,未找到返回-1print(sentence.find("Python")) # 输出:0② rfind(): 返回子字符串最后一次出现的索引,未找到返回-1print(sentence.rfind("Python")) # 输出:17③ index(): 与find()类似,但如果未找到会抛出ValueError异常print(sentence.index("优秀")) # 输出:9④ count(): 返回子字符串在字符串中出现的次数print(sentence.count("Python")) # 输出:22、替换⑤ replace(): 将字符串中的子字符串替换为新字符串,可指定替换次数new_sentence = sentence.replace("Python", "Java", 1)print(new_sentence) # 只替换第一个3、判断开头和结尾filename = "data_analysis.py"⑥ startswith(): 检查字符串是否以指定前缀开头print(filename.startswith("data")) # 输出:True⑦ endswith(): 检查字符串是否以指定后缀结尾print(filename.endswith(".py")) # 输出:True
4.3 分割与连接
1、分割字符串csv_data = "苹果,香蕉,橙子,葡萄,西瓜"① split(): 使用指定分隔符将字符串分割为列表fruits = csv_data.split(",")print(fruits) # 输出:['苹果', '香蕉', '橙子', '葡萄', '西瓜']text_lines = """第一行内容第二行内容第三行内容"""② splitlines(): 按行分割字符串,返回行列表lines = text_lines.splitlines()print(lines)2、连接字符串path_parts = ["home", "user", "documents", "report.txt"]③ join(): 使用指定分隔符连接可迭代对象中的字符串元素file_path = "/".join(path_parts)print(file_path) # 输出:home/user/documents/report.txt
4.4 去除空白字符
text_with_spaces = " 前后都有空格 "text_with_tabs = "\t\t带制表符的文本\n"print(f"原始文本:'{text_with_spaces}'")① strip(): 去除字符串两端的空白字符(包括空格、制表符、换行符等)print(f"去除两端:'{text_with_spaces.strip()}'")② lstrip(): 去除字符串左端的空白字符print(f"去除左端:'{text_with_spaces.lstrip()}'")③ rstrip(): 去除字符串右端的空白字符print(f"去除右端:'{text_with_spaces.rstrip()}'")print(f"去除所有空白:'{text_with_tabs.strip()}'")
4.5 字符串判断方法
test1 = "Python3"test2 = "12345"test3 = "ABCdef"test4 = " "test5 = "Hello World"① isalnum(): 检查字符串是否只包含字母和数字print(f"{test1} 是否全为字母数字:{test1.isalnum()}") # True② isdigit(): 检查字符串是否只包含数字print(f"{test2} 是否全为数字:{test2.isdigit()}") # True③ isalpha(): 检查字符串是否只包含字母print(f"{test3} 是否全为字母:{test3.isalpha()}") # True ④ isspace(): 检查字符串是否只包含空白字符print(f"{test4} 是否全为空格:{test4.isspace()}") # True⑤ istitle(): 检查字符串中每个单词的首字母是否都大写print(f"{test5} 是否每个单词首字母大写:{test5.istitle()}") # True
5. 字符串编码与字节转换
1、字符串与字节的转换text = "人工智能AI"2、编码为字节utf8_bytes = text.encode("utf-8")gbk_bytes = text.encode("gbk")print(f"UTF-8编码:{utf8_bytes}")print(f"GBK编码:{gbk_bytes}")3、解码为字符串decoded_text = utf8_bytes.decode("utf-8")print(f"解码后:{decoded_text}")4、处理不同编码try: gbk_decoded = gbk_bytes.decode("utf-8")except UnicodeDecodeError as e: print(f"编码错误:{e}")
6. 性能考虑与最佳实践
避免使用+进行大量字符串拼接1、不佳的做法:result = ""for i in range(10000): result += str(i) # 每次创建新字符串2、推荐的做法:parts = []for i in range(10000): parts.append(str(i))result = "".join(parts) # 一次性拼接3、使用in运算符进行成员测试text = "Python是一种解释型语言"if "解释型" in text: print("包含'解释型'")4、利用字符串不可变性original = "原始字符串"modified = original.replace("原始", "修改后")print(f"原字符串:{original}")print(f"修改后字符串:{modified}")