字符串
字符串是编程中最常用的数据类型之一,用于存储和处理文本数据。在前端开发中,我们经常使用 JavaScript 的字符串来处理 DOM 内容、API 响应等,而 Python 的字符串在数据处理、文件操作等方面同样强大。
创建
在 JavaScript 中,我们可以使用单引号或双引号来创建字符串:
Python 的字符串创建方式类似:
多行字符串
JavaScript 使用模板字面量(反引号)来创建多行字符串:
而 Python 提供了三重引号的优雅方式:
这种三重引号的方式比 JavaScript 的反引号更清晰,特别适合编写文档字符串或 SQL 查询。
格式化操作
JavaScript ES6 引入了模板字面量来处理字符串格式化:
Python 提供了两种主要的字符串格式化方法:format()
方法和 f-string。
format() 方法
format()
方法是传统的 Python 字符串格式化方式,功能强大:
格式化语法详解
Python 的格式化语法使用冒号 :
后跟格式说明符,语法为 {变量:格式说明符}
:
f-string 语法(推荐)
f-string 是 Python 3.6+ 引入的现代字符串格式化方式,语法更简洁直观:
格式化选项对比表
格式说明符 | 英文含义(帮助理解记忆) | 中文说明 | 示例输入 | 输出结果 |
---|---|---|---|---|
:.2f | f = float 浮点数 | 保留2位小数 | 19.996 | 20.00 |
:.1% | % = percent 百分比 | 保留1位小数的百分比 | 0.156 | 15.6% |
:.2e | e = exponential 指数 | 科学计数法2位小数 | 1234.56 | 1.23e+03 |
:d | d = decimal 十进制 | 整数格式 | 42 | 42 |
:, | , = comma 逗号 | 千位分隔符 | 1234567 | 1,234,567 |
:08d | 0 = zero padding 补零 | 补零到8位 | 42 | 00000042 |
:>10 | > = right 右箭头 | 右对齐到10位 | "hello" | " hello" |
:<10 | < = left 左箭头 | 左对齐到10位 | "hello" | "hello " |
:^10 | ^ = center 居中 | 居中对齐到10位 | "hello" | " hello " |
f-string 高级用法
f-string 可以包含表达式、函数调用和复杂的格式化选项:
format() vs f-string 对比
选择建议:
- 优先使用 f-string:语法简洁,性能更好,可读性强
- 使用 format() 的场景:需要重复使用模板字符串,或在旧版本 Python 中工作
与 JavaScript 对比:
- JavaScript:需要调用
toFixed()
、手动计算百分比等 - Python:内置丰富的格式化选项
:.2f
、:.1%
、:.2e
等
序列特性
这是 Python 字符串的一个重要特性:字符串是字符序列,类似于数组。JavaScript 中字符串也可以像数组一样访问:
Python 的字符串访问方式完全相同:
需要注意的是,Python 没有单独的字符数据类型,单个字符实际上就是长度为 1 的字符串。
长度获取
在 JavaScript 中,我们使用.length
属性来获取字符串长度:
Python 则使用len()
函数来获取字符串长度:
Python 的函数式方法保持了一致性,因为同样的len()
函数也适用于列表、元组等其他数据类型,这体现了 Python 设计的统一性。
索引与切片
JavaScript 中使用.slice()
方法进行切片:
Python 的切片语法更简洁:
负索引切片
JavaScript 需要通过计算来实现:
Python 的负索引更直观:
遍历操作
JavaScript 中使用 for 循环遍历:
Python 的语法更简洁:
子字符串检查
JavaScript 中我们使用.includes()
方法检查子字符串:
Python 使用更直观的in
关键字:
在条件语句中使用
JavaScript 中的条件检查:
Python 的条件检查更简洁:
in
和not in
关键字让代码读起来更像自然语言,这是 Python 的一大优势。
修改操作
大小写转换
JavaScript 的大小写转换:
Python 提供了更丰富的大小写转换选项:
去除空白
JavaScript 的空白处理:
Python 提供了类似功能:
字符串替换
JavaScript 中,replace()
默认只替换第一个匹配项,需要使用 replaceAll()
或正则表达式替换全部:
Python 的 replace()
方法默认就会替换所有匹配项,更符合直觉:
拼接操作
JavaScript 中使用+
操作符、+=
操作符或模板字面量进行拼接:
Python 支持相似的拼接方式,另外还有三引号多行拼接:
查找与检查
JavaScript 的查找方法:
Python 提供了更多选项:
分割与连接
JavaScript 的分割和连接:
Python 的分割和连接语法相似,但注意 join()
方法的调用方式相反:
字符类型判断
JavaScript 需要使用正则表达式:
Python 提供了便捷的内置方法:
str() 与 repr()
Python 提供了两种字符串显示方式:str()
用于用户友好显示,repr()
用于开发者调试。
repr()
主要用于调试,显示字符串的真实内容:
转义字符
转义字符是用反斜杠 \
开头的特殊字符序列,用来表示一些无法直接输入或有特殊含义的字符,比如换行符、制表符、引号等。
JavaScript 的转义字符:
Python 的转义字符用法相同:
使用 repr() 查看转义字符
前面我们学了 repr()
方法,它在处理转义字符时特别有用,可以清楚地显示字符串的真实内容:
这样可以清楚地看到:
\n
在print()
中显示为换行,在repr()
中显示为\n
字符\t
在print()
中显示为制表符间距,在repr()
中显示为\t
字符\"
在字符串中表示双引号字符
常见转义字符表
转义序列 | 含义 | print() 效果 | repr() 显示 |
---|---|---|---|
\" | 双引号 | Hello "World" | "Hello \"World\"" |
\' | 单引号 | It's okay | "It\'s okay" |
\\ | 反斜杠 | C:\Users | "C:\\\\Users" |
\n | 换行符 | Line1 Line2 | "Line1\\nLine2" |
\t | 制表符 | A B | "A\\tB" |
\r | 回车符 | World(覆盖前面内容) | "Hello\\rWorld" |
重复操作
JavaScript 使用.repeat()
方法:
Python 使用*
操作符更简洁:
常用方法一览
方法 | 描述 | 示例 |
---|---|---|
f"text {var}" | f-string 格式化(推荐) | f"Hello {name}" |
len(text) | 获取字符串长度(函数调用) | len("hello") → 5 |
text[index] | 索引访问字符(支持负索引) | "hello"[1] → 'e' |
text[start:end] | 切片操作(左闭右开) | "hello"[1:4] → 'ell' |
"sub" in text | 检查子字符串 | "ll" in "hello" → True |
text.upper() | 转为大写 | "hello".upper() → 'HELLO' |
text.lower() | 转为小写 | "HELLO".lower() → 'hello' |
text.title() | 标题格式(每个单词首字母大写) | "hello world".title() → 'Hello World' |
text.strip() | 去除两端空白 | " hello ".strip() → 'hello' |
text.replace(old, new) | 字符串替换(默认全局) | "hi hi".replace("hi", "bye") → 'bye bye' |
text.split(sep) | 分割字符串为列表 | "a,b,c".split(",") → ['a', 'b', 'c'] |
sep.join(list) | 连接列表为字符串(字符串调用) | ",".join(['a', 'b']) → 'a,b' |
text.find(sub) | 查找子字符串位置(未找到返回 -1) | "hello".find("ll") → 2 |
text.startswith(prefix) | 检查开头 | "hello".startswith("he") → True |
text.endswith(suffix) | 检查结尾 | "hello".endswith("lo") → True |
text.isdigit() | 是否全为数字 | "123".isdigit() → True |
text.isalpha() | 是否全为字母 | "abc".isalpha() → True |
text * n | 重复字符串 | "hi" * 3 → 'hihihi' |
小结
Python 字符串提供了强大而直观的文本处理能力:
核心特性:
- 不可变性:字符串创建后不可修改,所有操作返回新字符串
- 序列操作:支持索引访问
text[0]
和切片text[1:5]
,负索引更方便 - 格式化:f-string 语法简洁,功能强大,是首选方案
易与 JavaScript 混淆的点:
len(text)
获取长度,而非.length
属性"substring" in text
检查子字符串,比.includes()
更直观replace()
默认全局替换,无需replaceAll()
" | ".join(list)
连接方式与array.join()
相反
练习
处理用户输入数据,输出用户卡片:
=========================
👤 用户信息卡片
=========================
姓名: Zhang Wei
昵称: ZW
邮箱: zhang.wei@gmail.com
手机: 138 0013 8000
=========================