Python 字符串(String)完全指南:一篇文章掌握核心技巧!

createh51个月前 (02-10)技术教程16

在 Python 中,字符串string)是最常用的数据类型之一。无论是处理用户输入user input)读取文件file reading),还是操作 API 数据API data processing),字符串无处不在(ubiquitous)

本篇文章将带你从基础语法(basic syntax)高级技巧advanced techniques让你彻底掌握 Python 字符串master Python strings)!


1. 字符串的基本定义(String Definition)

在 Python 中,字符串可以用单引号(' ')、双引号(" ")三引号(''' ''' / """ """) 表示:

s1 = 'Hello, Python!'  # 单引号 (single quotes)
s2 = "Hello, Python!"  # 双引号 (double quotes)
s3 = '''Hello, 
Python!'''  # 三引号 (triple quotes) 可以表示多行字符串 (multi-line string)

提示(Tip): Python 中单引号和双引号没有区别(no difference between single and double quotes),但在字符串中包含引号时,需要注意:

text = "I'm learning Python"  # 正确 ?
text = 'He said, "Hello!"'  # 正确 ?

?? 2. 字符串索引 & 切片(Indexing & Slicing)

字符串是一种序列类型(sequence type),可以通过索引(indexing)访问字符,也可以用切片slicing)获取子串substring)。

索引(Indexing)

字符串的索引从 0 开始zero-based index):

s = "Python"
print(s[0])  # P
print(s[-1]) # n(负索引,negative index,表示从右往左数)

切片(Slicing)

切片使用 start:end:step 语法:

s = "Python"
print(s[0:4])   # "Pyth"(从索引 0 到 3,不包括 4)
print(s[:3])    # "Pyt"(省略 start,默认从 0 开始)
print(s[2:])    # "thon"(省略 end,默认切到最后)
print(s[::-1])  # "nohtyP"(步长 step 为 -1,实现字符串翻转)

提示(Tip): [::-1] 是 Python 中**最快速翻转字符串(reverse a string)**的方法。


3. 常见字符串操作(Common String Operations)

Python 内置了丰富的字符串方法(string methods),可以轻松完成大小写转换case conversion)、查找searching)、替换replacing)等任务。

大小写转换(Case Conversion)

s = "hello Python"
print(s.upper())  # "HELLO PYTHON"(转大写 uppercase)
print(s.lower())  # "hello python"(转小写 lowercase)
print(s.title())  # "Hello Python"(首字母大写 capitalize each word)
print(s.swapcase())  # "HELLO pYTHON"(大小写互换 swap case)

查找 & 计数(Find & Count)

s = "Python is great!"
print(s.find("is"))  # 7(找到 "is" 的索引位置)
print(s.count("t"))  # 2(统计 "t" 出现的次数)

替换字符串(Replacing Strings)

s = "I love Java"
print(s.replace("Java", "Python"))  # "I love Python"

提示(Tip): replace() 不会改变原字符串,而是返回新的字符串(returns a new string)。


4. 拆分 & 连接字符串(Splitting & Joining)

数据处理data processing)时,经常需要拆分split字符串或者合并join)多个单词。

拆分字符串(Splitting a String)

s = "apple,banana,grape"
words = s.split(",")  # 按逗号分割
print(words)  # ['apple', 'banana', 'grape']

连接字符串(Joining Strings)

words = ['apple', 'banana', 'grape']
s = "-".join(words)  # 用 "-" 连接
print(s)  # "apple-banana-grape"

提示(Tip): join() 比字符串拼接(string concatenation)更高效(efficient),适用于处理大量文本数据(large text data)。


5. f-字符串(f-strings)——最优雅的字符串格式化(String Formatting)

Python 提供了多种字符串格式化方式,其中f-字符串(f-strings)是最简洁高效的(concise & efficient)。

name = "Alice"
age = 25
print(f"My name is {name}, and I am {age} years old.")  
# 输出: "My name is Alice, and I am 25 years old."

提示(Tip): f-字符串比 format() 方法更直观(more intuitive)且执行速度更快(faster execution)。


? 6. 高级技巧(Advanced Techniques)

正则表达式(Regular Expressions, 简称 regex)

在处理文本匹配text matching)、数据清理data cleaning)时,re 模块的正则表达式非常强大!

import re
s = "Python is awesome!"
pattern = r"Python"
match = re.search(pattern, s)
print(match.group())  # "Python"

字符串转数值(Convert String to Number)

num_str = "100"
num = int(num_str)  # 转整数
print(num + 50)  # 150

生成随机字符串(Generate Random String)

import random
import string
random_str = ''.join(random.choices(string.ascii_letters + string.digits, k=10))
print(random_str)  # 例如: "a9B3dE7XyZ"

总结(Summary)

索引 & 切片(Indexing & Slicing) —— 访问字符串中的某部分
字符串方法(String Methods) —— 转换大小写、查找、替换等
拆分 & 连接(Splitting & Joining) —— 处理文本数据的利器
f-字符串(f-strings) —— 最推荐的格式化方式
高级技巧(Advanced Techniques) —— 正则表达式、字符串转换、随机生成

Python 字符串用法千变万化,掌握它,你的编程效率coding efficiency)会大大提升!

你最喜欢的字符串技巧是什么?欢迎留言讨论!

相关文章

深入解析Java字符串String、StringBuilder与StringBuffer全知道

一、引言在 Java 编程的世界里,字符串操作就如同搭建高楼大厦的基石,无处不在且至关重要。想象一下,你正在开发一个社交媒体应用,需要拼接用户的姓名、动态内容、发布时间等信息,展示在用户的主页上;又或...

「开发者成长」5 个刁钻的Java String 面试题

这篇来看看关于 Java String 类的 5 道面试题,这五道题,我自己在面试过程中亲身经历过几道题目,本篇就带你了解这些题的答案为什么是这样。1.判定定义为String类型的st1和st2是否相...

JSON全解析:语法、转换与FastJson应用指南

大家好,我是袁庭新。JSON是一种轻量级、基于文本、开放式的数据交换格式。在数据交换的世界里,JSON 扮演着重要角色。它究竟为何备受青睐?下面就为您详细解读其奥秘与应用。1.JSON简述JSON(J...

从 Java 迁移到 Kotlin:关键应用全部切换、代码库千万行 Kotlin 代码

作者 | 罗燕珊、核子可乐Facebook 母公司 Meta 正在将其 Android 应用的 Java 代码迁移到 Kotlin。根据 Meta 的官方博客所述,截至今天,其 Android 代码库...

Java,字符串编码,ASCII、GBK、Unicode、UTF-8、UTF-16和UTF-32

字符串编码ASCII和非ASCIIASCII,American Standard Code for Information Interchange(美国信息交换标准代码),是基于拉丁字母的,主要用于显...