Python字符串及操作:从基础到高级用法详解

发布时间:2026/7/22 19:36:29

Python字符串及操作:从基础到高级用法详解 1. 什么是Python字符串在Python中字符串String是一种不可变序列类型用于表示文本数据。字符串由一系列字符组成可以使用单引号、双引号或三引号或来创建。# 三种创建字符串的方式str1Hello, World!# 单引号str2Python Programming# 双引号str3这是一个 多行字符串# 三引号多行字符串在Python中是不可变的这意味着一旦创建就不能修改其中的字符。所有看似修改字符串的操作实际上都是创建了一个新的字符串。2. 字符串的基本操作2.1 字符串连接# 使用 运算符连接字符串first_name张last_name三full_namefirst_name last_nameprint(full_name)# 输出张 三# 使用 join() 方法连接字符串列表words[Python,字符串,操作]sentence .join(words)print(sentence)# 输出Python 字符串 操作2.2 字符串重复# 使用 * 运算符重复字符串line-*30print(line)# 输出------------------------------# 创建重复模式patternABC*3print(pattern)# 输出ABCABCABC2.3 字符串长度textHello, Python!lengthlen(text)print(f字符串长度{length})# 输出字符串长度143. 字符串索引和切片3.1 索引访问sPythonprint(s[0])# 输出P第一个字符print(s[-1])# 输出n最后一个字符print(s[2])# 输出t第三个字符3.2 切片操作sPython Programming# 基本切片print(s[0:6])# 输出Python索引0到5print(s[7:])# 输出Programming从索引7到末尾print(s[:6])# 输出Python从开头到索引5print(s[::2])# 输出Pto rgamn步长为2print(s[::-1])# 输出gnimmargorP nohtyP反转字符串# 负索引切片print(s[-11:])# 输出Programming4. 字符串常用方法4.1 大小写转换textPython String Methodsprint(text.lower())# 输出python string methodsprint(text.upper())# 输出PYTHON STRING METHODSprint(text.title())# 输出Python String Methodsprint(text.capitalize())# 输出Python string methodsprint(text.swapcase())# 输出pYTHON sTRING mETHODS4.2 查找和替换sPython is powerful. Python is easy to learn.# 查找子字符串print(s.find(Python))# 输出0print(s.rfind(Python))# 输出20从右边开始查找print(s.index(powerful))# 输出10print(Pythonins)# 输出True# 替换子字符串new_ss.replace(Python,Java)print(new_s)# 输出Java is powerful. Java is easy to learn.# 计数子字符串出现次数counts.count(Python)print(fPython出现次数{count})# 输出Python出现次数24.3 去除空白字符text Python Programming print(text.strip())# 输出Python Programming去除两端空白print(text.lstrip())# 输出Python Programming 去除左端空白print(text.rstrip())# 输出 Python Programming去除右端空白# 去除特定字符text2###Python###print(text2.strip(#))# 输出Python4.4 分割和连接# 分割字符串csv_dataapple,banana,orange,grapefruitscsv_data.split(,)print(fruits)# 输出[apple, banana, orange, grape]# 按行分割multiline第一行\n第二行\n第三行linesmultiline.splitlines()print(lines)# 输出[第一行, 第二行, 第三行]# 分区操作emailuserexample.comlocal,at,domainemail.partition()print(f本地部分{local})# 输出本地部分userprint(f域名部分{domain})# 输出域名部分example.com5. 字符串格式化5.1 传统格式化%操作符name张三age25score95.5# 基本格式化print(姓名%s年龄%d%(name,age))print(分数%.2f%score)# 字典格式化info{name:李四,age:30}print(姓名%(name)s年龄%(age)d%info)5.2 format()方法name王五age28# 位置参数print(姓名{}年龄{}.format(name,age))# 关键字参数print(姓名{name}年龄{age}.format(namename,ageage))# 格式化数字pi3.1415926print(圆周率{:.2f}.format(pi))# 输出圆周率3.14print(二进制{:b}.format(10))# 输出二进制1010print(十六进制{:x}.format(255))# 输出十六进制ff5.3 f-stringPython 3.6name赵六age32salary8500.50# 基本使用print(f姓名{name}年龄{age})# 表达式计算print(f明年年龄{age1})# 格式化数字print(f月薪{salary:,.2f}元)# 输出月薪8,500.50元print(f百分比{0.875:.2%})# 输出百分比87.50%# 调用方法texthello worldprint(f首字母大写{text.title()})# 输出首字母大写Hello World6. 字符串检查方法# 检查字符串内容s1Python123s212345s3HELLOs4hellos5 s6Python Programmingprint(s1.isalnum())# 输出True字母或数字print(s2.isdigit())# 输出True全是数字print(s3.isupper())# 输出True全大写print(s4.islower())# 输出True全小写print(s5.isspace())# 输出True全是空白字符print(s6.istitle())# 输出True每个单词首字母大写print(s1.startswith(Py))# 输出Trueprint(s6.endswith(ing))# 输出True7. 转义字符和原始字符串7.1 常见转义字符print(换行第一行\n第二行)print(制表符姓名\t年龄\t成绩)print(双引号\Python\)print(单引号\Hello\)print(反斜杠C:\\Users\\Admin)print(Unicode\u4e2d\u6587)# 输出中文7.2 原始字符串# 普通字符串中的反斜杠需要转义path1C:\\Users\\Admin\\Documentsprint(path1)# 原始字符串r前缀中的反斜杠不转义path2rC:\Users\Admin\Documentsprint(path2)# 输出C:\Users\Admin\Documents# 正则表达式中常用原始字符串importre patternr\d{3}-\d{8}8. 字符串编码和解码# 字符串编码为字节text你好世界utf8_bytestext.encode(utf-8)gbk_bytestext.encode(gbk)print(fUTF-8编码{utf8_bytes})print(fGBK编码{gbk_bytes})# 字节解码为字符串decoded_text1utf8_bytes.decode(utf-8)decoded_text2gbk_bytes.decode(gbk)print(fUTF-8解码{decoded_text1})print(fGBK解码{decoded_text2})9. 实际应用示例9.1 用户输入处理defprocess_user_input():# 获取用户输入user_inputinput(请输入您的姓名和年龄格式姓名,年龄)# 清理输入cleaned_inputuser_input.strip()# 分割数据if,incleaned_input:name,age_strcleaned_input.split(,,1)namename.strip()age_strage_str.strip()# 验证年龄是否为数字ifage_str.isdigit():ageint(age_str)returnf用户{name}年龄{age}else:return错误年龄必须是数字else:return错误请输入正确的格式姓名,年龄# 测试resultprocess_user_input()print(result)9.2 文本数据分析defanalyze_text(text):分析文本的统计信息# 基本统计total_charslen(text)wordstext.split()total_wordslen(words)# 字符类型统计digit_countsum(1forcharintextifchar.isdigit())letter_countsum(1forcharintextifchar.isalpha())space_countsum(1forcharintextifchar.isspace())# 单词长度统计word_lengths[len(word)forwordinwords]avg_word_lengthsum(word_lengths)/total_wordsiftotal_words0else0return{总字符数:total_chars,总单词数:total_words,数字字符数:digit_count,字母字符数:letter_count,空格字符数:space_count,平均单词长度:round(avg_word_length,2)}# 测试sample_textPython 3.9 was released in 2020. It has many new features!statsanalyze_text(sample_text)forkey,valueinstats.items():print(f{key}:{value})9.3 简单的文本加密defcaesar_cipher(text,shift):凯撒密码加密result[]forcharintext:ifchar.isalpha():# 确定基准字符baseord(A)ifchar.isupper()elseord(a)# 移位并取模shifted(ord(char)-baseshift)%26result.append(chr(baseshifted))else:result.append(char)return.join(result)# 测试加密和解密originalHello, Python!encryptedcaesar_cipher(original,3)decryptedcaesar_cipher(encrypted,-3)print(f原文{original})print(f加密{encrypted})print(f解密{decrypted})10. 性能优化建议使用join()代替连接大量字符串# 不推荐性能差resultforiinrange(10000):resultstr(i)# 推荐性能好parts[str(i)foriinrange(10000)]result.join(parts)使用字符串方法而非正则表达式处理简单模式# 简单替换使用replace()而非re.sub()text.replace(old,new)# 更快预编译格式化字符串模板# 需要多次格式化的场景template姓名{}年龄{}分数{:.2f}forstudentinstudents:print(template.format(student.name,student.age,student.score))使用切片而非循环处理字符串# 更高效的反转字符串方式reversed_stroriginal_str[::-1]总结Python字符串操作是编程中的基础技能掌握这些操作能显著提高代码效率和可读性。关键要点包括不可变性理解字符串不可变的特性避免不必要的字符串创建格式化选择根据Python版本选择合适的格式化方法f-string优先方法链式调用合理组合字符串方法如text.strip().lower().replace()编码处理在处理中文或网络数据时注意编码问题性能意识在大规模字符串处理时选择高效的方法通过不断练习这些字符串操作你将能够更优雅地处理各种文本处理任务。

相关新闻