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

createh53个月前 (02-10)技术教程58

在 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 Map 所有的值转为String类型

可以使用 Java 8 中的 Map.replaceAll() 方法将所有的值转为 String 类型:Map map = new HashMap(); // 添加一些键值对 map.put("key...

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

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

100个Java工具类之12:JSON、JSON字符串和对象三者互转

该系列为java工具类系列,主要展示100个常用的java工具类。本系列工具类的核心目的主要有三点:1,以便他用:提供可用的Java工具类,方便大家使用,避免重复造轮子2,个人记录:作为个人记录,同时...

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

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

Java中怎样将bytes转换为long类型?

  在Java中将字节数组(bytes)转换为long类型,可以使用Java的ByteBuffer类来实现。ByteBuffer类提供了一种方便的方式来处理原始数据类型的字节序列。  以下笔者用具体的...