Python快速学习——第2章:字符串

4 阅读5分钟

第二章:字符串

2.1 什么是字符串?

字符串就像 一串珍珠项链,由零个或多个字符按照顺序串在一起,形成一段有意义的文本。

字符串可以用三种引号来创建。

# 创建字符串。
​
name = '张三'; # 单引号。
​
school = "Hello, World!"; # 双引号。# 三引号(可以包含多行内容)。
poem = """床前明月光,
          疑是地上霜。
          举头望明月,
          低头思故乡。""";

2.2 字符串的基本操作

2.2.1 访问字符串中的字符

字符串中的每个字符都有固定的位置(索引),从0开始:

text = "Python编程";
print(text[0]);   # P - 第一个字符。
print(text[1]);   # y - 第二个字符。
print(text[-1]);  # 程 - 最后一个字符。
print(text[-2]);  # 编 - 倒数第二个字符。

2.2.2 字符串切片

我们可以获取字符串的一部分,就像切蛋糕一样:

text = "Hello, Python!";
​
# 基本切片。
print(text[0:5]);    # Hello - 从索引0到4。
print(text[7:13]);   # Python - 从索引7到12。# 省略开始或结束索引。
print(text[:5]);     # Hello - 从开头到索引4。
print(text[7:]);     # Python! - 从索引7到结尾。# 使用步长。
print(text[::2]);    # Hlo yhn - 每隔一个字符取一个。

2.2.3 字符串长度

使用 len() 函数获取字符串的长度

name = "张三";
print(len(name));  # 2 :包含2个字符。
​
english_name = "John";
print(len(english_name));  # 4 :包含4个字符。
​
mixed = "Hello世界";
print(len(mixed));  # 7 :5个英文字符 + 2个中文字符。

2.2.4 字符串的拼接

把多个字符串连接在一起:

# 使用 + 号拼接。
first_name = "张";
last_name = "三";
full_name = first_name + last_name;
print(full_name);  # 张三。# 使用 * 号重复。
laugh = "哈" * 3;
print(laugh);  # 哈哈哈。# 使用 join() 方法。
words = ["我", "爱", "Python"];
sentence = "".join(words); # 用空字符连接。
print(sentence);  # 我爱Python。

2.3 字符串的常用方法

2.3.1 大小写转换

text = "Hello, World!";
​
print(text.upper());      # HELLO, WORLD! - 全部大写。
print(text.lower());      # hello, world! - 全部小写。
print(text.title());      # Hello, World! - 每个单词首字母大写。
print(text.capitalize()); # Hello, world! - 首字母大写(非所有单词)。

2.3.2 查找和替换

text = "我喜欢Python编程,Python很有趣";
​
# 查找。
print(text.find("Python"));    # 3 - 第一次出现的位置。
print(text.rfind("Python"));   # 12 - 最后一次出现的位置。
print(text.count("Python"));   # 2 - 出现的次数。# 替换。
new_text = text.replace("Python", "Java");
print(new_text);  # 我喜欢Java编程,Java很有趣。

2.3.3 去除空白字符

text = "   Hello, World!   ";
​
print(text.strip());      # "Hello, World!" - 去除两边空白。
print(text.lstrip());     # "Hello, World!   " - 去除左边空白。
print(text.rstrip());     # "   Hello, World!" - 去除右边空白。

2.3.4 判断字符串内容

text = "Hello123";
​
print(text.isalpha());     # False - 是否全是字母。
print(text.isdigit());     # False - 是否全是数字。
print(text.isalnum());     # True - 是否全是字母或数字。
print(text.startswith("H"));  # True - 是否以H开头。
print(text.endswith("3"));    # True - 是否以3结尾。

2.3.5 分割和连接

# 分割字符串。
sentence = "我,喜欢,Python,编程";
words = sentence.split(",");
print(words)  # ['我', '喜欢', 'Python', '编程'];# 连接字符串。
new_sentence = "-".join(words);
print(new_sentence);  # 我-喜欢-Python-编程。

2.4 字符串格式化

2.4.1 使用 % 格式化

name = "张三";
age = 20;
score = 95.5;
​
# 传统格式化方式。
message = "我叫%s,今年%d岁,成绩是%.1f分" % (name, age, score);
print(message);  # 我叫张三,今年20岁,成绩是95.5分。

2.4.2 使用 format() 方法

name = "李四";
age = 22;
​
# format方法。
message = "我叫{},今年{}岁".format(name, age);
print(message);  # 我叫李四,今年22岁。# 带位置参数。
message = "我叫{0},今年{1}岁,{0}喜欢编程".format(name, age);
print(message);  # 我叫李四,今年22岁,李四喜欢编程。

2.4.3 使用 f-string(推荐)

name = "王五";
age = 25;
height = 175.5;
​
# f-string(Python 3.6+)。
message = f"我叫{name},今年{age}岁,身高{height}cm";
print(message);  # 我叫王五,今年25岁,身高175.5cm。# 在f-string中使用表达式。
a = 10;
b = 20;
result = f"{a} + {b} = {a + b}";
print(result)  # 10 + 20 = 30;

2.5 转义字符

有些特殊字符需要用特殊的方式表示:

# 常用转义字符。
print("Hello\nWorld");     # \n 换行。
print("Hello\tWorld");     # \t 制表符。
print("他说:"你好"");     # " 双引号。 转义双引号,使得双引号正常输出。
print('他说:'你好'');     # ' 单引号。 转义单引号,使得单引号正常输出。
print("反斜杠:\");         # \ 反斜杠本身。
​
# 原始字符串(不处理转义字符)。
path = r"C:\Users\Documents\file.txt";
print(path);  # C:\Users\Documents\file.txt。

运行结果:

Hello
World
Hello    World
他说:"你好"
他说:'你好'
反斜杠:\
C:\Users\Documents\file.txt

2.6 字符串的不可变性

在Python中,字符串一旦创建就不能修改

text = "Hello";
# text[0] = "h";  # 这会报错!# 正确的方式是创建新的字符串。
new_text = "h" + text[1:];
print(new_text);  # hello。

2.7 字符串编码

了解字符串的编码方式很重要:

text = "你好,世界";
​
# 编码为字节。
bytes_data = text.encode("utf-8");
print(bytes_data)  # b'\xe4\xbd\xa0\xe5\xa5\xbd\xef\xbc\x8c\xe4\xb8\x96\xe7\x95\x8c'# 解码为字符串。
new_text = bytes_data.decode("utf-8");
print(new_text);  # 你好,世界。

本章笔记:

  • 字符串是由字符组成的序列,用于表示文本信息。
  • 可以用单引号双引号三引号创建字符串。
  • 可以通过索引访问单个字符,通过切片获取子串。
  • 字符串支持拼接重复等基本操作。
  • 字符串有很多实用的方法,如大小写转换、查找替换、分割连接等。
  • 字符串格式化有三种方式:%格式化、format()方法和f-string。
  • 转义字符用于表示特殊字符。
  • 字符串是不可变的,任何修改都会创建新的字符串。
  • 了解字符串编码有助于处理不同字符集的数据。