pin_drop当前位置:知识文库 ❯ 图文

Python字符串创建与访问

字符串(String)是Python中最常用的数据类型之一,用于表示文本信息。在Python中,字符串是由零个或多个字符组成的不可变序列。本篇教程将详细介绍字符串的多种创建方式、如何通过索引访问字符串中的字符,以及字符串不可变性的含义与影响。


多种创建方式

使用单引号

最简单的字符串创建方式,适用于不包含单引号的文本:

代码示例

name = 'Python'
print(name)
print(type(name))

使用双引号

与单引号完全等价,适用于不包含双引号的文本:

代码示例

greeting = "Hello, World!"
print(greeting)

提示:单引号和双引号在Python中完全等价,选择哪种取决于字符串内容和个人习惯。

使用三引号

三引号('''或""")用于创建多行字符串,保留文本中的换行和缩进:

代码示例

poem = '''静夜思
床前明月光,
疑是地上霜。
举头望明月,
低头思故乡。'''
print(poem)

使用str()函数

将其他类型转换为字符串:

代码示例

num_str = str(123)
float_str = str(3.14)
bool_str = str(True)
list_str = str([1, 2, 3])

print(num_str)
print(float_str)
print(bool_str)
print(list_str)

使用转义字符

在字符串中使用特殊字符时,需要用反斜杠\进行转义:

代码示例

text1 = 'It\'s a beautiful day'
text2 = "He said: \"Hello!\""
text3 = "第一行\n第二行"
text4 = "A\tB\tC"

print(text1)
print(text2)
print(text3)
print(text4)

常用转义字符:

转义字符 含义
\' 单引号
\" 双引号
\\ 反斜杠
\n 换行
\t 制表符
\r 回车

使用原始字符串

在字符串前加r,表示不进行转义处理,常用于正则表达式和文件路径:

代码示例

path = r"C:\Users\new\test"
regex = r"\d+\.\d+"

print(path)
print(regex)

索引访问

Python中字符串的每个字符都有一个对应的索引(位置编号),可以通过索引来访问单个字符。

正向索引

从左到右,从0开始编号:

代码示例

s = "Python"
print(s[0])
print(s[1])
print(s[5])

索引示意:

代码示例

字符串:  P   y   t   h   o   n
索引:    0   1   2   3   4   5

负向索引

从右到左,从-1开始编号,-1代表最后一个字符:

代码示例

s = "Python"
print(s[-1])
print(s[-2])
print(s[-6])

索引示意:

代码示例

字符串:  P    y    t    h    o    n
正向:    0    1    2    3    4    5
负向:   -6   -5   -4   -3   -2   -1

索引越界

访问不存在的索引会抛出IndexError

代码示例

s = "Python"
try:
    print(s[10])
except IndexError as e:
    print(f"索引越界: {e}")

字符串不可变性

字符串是不可变对象,一旦创建就不能修改其中的任何字符。尝试修改会抛出TypeError

代码示例

s = "Python"
try:
    s[0] = "J"
except TypeError as e:
    print(f"无法修改: {e}")

"修改"字符串的正确方式

虽然不能直接修改,但可以通过创建新字符串来实现"修改"效果:

代码示例

s = "Python"
new_s = "J" + s[1:]
print(new_s)

代码示例

综合运用字符串创建与访问:

代码示例

s1 = 'Hello'
s2 = "World"
s3 = """这是一个
多行字符串"""
s4 = str(100)
s5 = r"C:\new\test"

print(f"s1 = {s1}")
print(f"s2 = {s2}")
print(f"s3 = {s3}")
print(f"s4 = {s4}")
print(f"s5 = {s5}")

word = "Python"
print(f"第一个字符: {word[0]}")
print(f"最后一个字符: {word[-1]}")
print(f"第三个字符: {word[2]}")

for i, ch in enumerate(word):
    print(f"索引 {i}: {ch}")

注意事项

提示:单引号和双引号创建的字符串完全等价,没有区别

提示:三引号字符串会保留所有空白字符(换行、空格、缩进)

提示:索引从0开始,负索引从-1开始,这是初学者最容易出错的地方

提示:字符串不可变,任何"修改"操作都是创建新字符串

提示:原始字符串不能以奇数个反斜杠结尾


小结

本篇教程介绍了Python字符串的多种创建方式(单引号、双引号、三引号、str()函数、转义字符、原始字符串),以及如何通过正向索引和负向索引访问字符串中的字符,最后强调了字符串的不可变性。理解这些基础知识是后续学习字符串操作的前提。


练习题

练习1

创建一个字符串变量,存储你的自我介绍(包含换行),然后分别打印第一个字符和最后一个字符。

练习2

给定字符串 s = "ABCDEFGHIJ",请使用索引分别打印出第1个、第5个和最后一个字符,并说明正向索引和负向索引的对应关系。

常见问题

Python中单引号和双引号创建字符串有什么区别?

在Python中,单引号和双引号创建的字符串完全等价,没有任何区别。选择哪种方式取决于字符串内容(如果字符串中包含单引号就用双引号包裹,反之亦然)和个人编码习惯。

字符串的负索引-1代表什么位置?

负索引从-1开始,-1代表字符串的最后一个字符,-2代表倒数第二个字符,以此类推。例如字符串"Python"中,s[-1]是'n',s[-6]是'P'。

为什么字符串是不可变的?

字符串不可变意味着一旦创建就不能修改其中的字符。这是Python的设计决策,保证了字符串的安全性和可预测性。如果需要"修改"字符串,只能通过创建新的字符串来实现,例如使用拼接或切片。

原始字符串(r-string)有什么用?

在字符串前加r表示不进行转义处理,反斜杠会被当作普通字符。这在编写正则表达式和Windows文件路径时非常有用,可以避免大量的转义字符带来的混乱。

访问超出范围的索引会发生什么?

访问不存在的索引会抛出IndexError异常。例如字符串长度为6,访问s[10]就会报错。建议在访问前先检查索引是否有效,或使用try-except捕获异常。

三引号字符串和普通引号字符串有什么不同?

三引号('''或""")可以创建多行字符串,并且会保留文本中的所有空白字符(包括换行符、空格和缩进)。而单引号和双引号只能创建单行字符串,不能直接包含换行。

小贴士

在Python中,字符串是不可变的序列类型,这意味着你可以使用索引和切片来读取字符,但不能直接修改。理解这一点对于掌握后续的字符串操作(如replace、split等)至关重要。另外,Python内部会对短字符串进行缓存优化,相同的短字符串可能共享同一块内存,这是Python的性能优化策略之一。

标签: Python字符串 字符串创建 字符串索引 负索引 转义字符 原始字符串 字符串不可变

本文涉及AI创作

内容由AI创作,请仔细甄别

list快速访问

上一篇: Python类型判断 下一篇: Python字符串拼接

poll相关推荐

作者头像 智能小晨 python

Python元组命名namedtuple

发布日期 2026-05-31
深入学习Python命名元组namedtuple,掌握字段访问、_make创建、_asdict转字典、_replace替换字段等核心方法。理解命名元组与普通元组的区别,写出更清晰易读的Python代码。
作者头像 智能小晨 python

Python元组解包

发布日期 2026-05-31
全面学习Python元组解包技巧,包括基本解包、星号扩展解包、嵌套解包、交换变量和函数多值返回。掌握优雅的Python赋值语法,让你的代码更简洁高效。
作者头像 智能小晨 python

Python元组index方法

发布日期 2026-05-31
深入学习Python元组index()方法,掌握元素索引查找技巧。了解index()语法、指定范围查找、安全查找方法和实际应用场景,避免ValueError异常,提升Python编程效率。
作者头像 智能小晨 python

Python元组count方法

发布日期 2026-05-31
深入学习Python元组count()方法,掌握元素出现次数统计技巧。了解count()语法、性能优化建议、嵌套元组统计和实际应用场景,配合练习题巩固所学知识。