方法 返回类型 举例
f.read() 字符串 (str) "itheima itcast python\nitheima python..."
f.readlines() 列表 (list) ["itheima itcast python\n", "itheima python..."]
f.readline() 字符串 (str) "itheima itcast python\n"

with open("word.txt", "r", encoding="UTF-8") as f:

作用:打开文件,给文件起个名字叫 f

  • "word.txt":要打开的文件名

  • "r":只读模式

  • encoding="UTF-8":使用UTF-8编码(支持中文)

  • as f:把打开的文件对象赋值给变量 f

  • with:会自动关闭文件,不用手动写 f.close()

lines = f.readlines()

作用:一次性读取文件的所有行,保存到 lines 变量中

  • f.readlines() 会返回一个列表

  • 列表里每个元素就是文件中的一行(字符串格式)

举例:假设 word.txt 内容是:

text

itheima itcast python
itheima python itcast
beijing shanghai itheima

那么 lines 的值是:

python

lines = [
    "itheima itcast python\n",      # 第1行(注意末尾有\n换行符)
    "itheima python itcast\n",      # 第2行
    "beijing shanghai itheima\n"    # 第3行
]
for line in lines:

作用for 循环,依次取出 lines 列表中的每一行

  • 第1次循环:line = "itheima itcast python\n"

  • 第2次循环:line = "itheima python itcast\n"

  • 第3次循环:line = "beijing shanghai itheima\n"

lines的类型为列表,line的类型为字符串。


python

        print(f"每一行为: {line.strip()}")

作用:打印当前行内容

  • line 是当前行的字符串(末尾有 \n 换行符)

  • .strip() 是字符串方法,作用是去掉字符串开头和结尾的空白字符(包括空格、换行符 \n、制表符等)

举例

python

line = "itheima itcast python\n"
line.strip()  # 结果是 "itheima itcast python"(去掉了末尾的\n)

line = "   hello world   \n"
line.strip()  # 结果是 "hello world"(去掉了前后空格和\n)

为什么要用 .strip()

  • 直接打印 line 会多一个空行(因为 line 末尾有 \nprint() 本身也会换行)

  • 用 .strip() 去掉 \n 后,打印出来更美观

文件内容:
┌─────────────────────────────┐
│ itheima itcast python\n     │ ← 第1行
│ itheima python itcast\n     │ ← 第2行  
│ beijing shanghai itheima\n  │ ← 第3行
└─────────────────────────────┘
           ↓
    f.readlines() 读取
           ↓
    lines = [第1行, 第2行, 第3行]  ← 这是一个列表
           ↓
    for line in lines:  ← 循环
           ↓
    第1次循环:line = "itheima itcast python\n"
           ↓
    line.strip() → "itheima itcast python"
           ↓
    print() → 输出:每一行为: itheima itcast python
           ↓
    第2次循环:line = "itheima python itcast\n"
           ↓
    ... 以此类推

方法 作用
f.readlines() 一次性读所有行,返回列表
for line in lines 循环遍历每一行
line.strip() 去掉行首尾的空白字符(换行符、空格等)

  • f.read() 返回的确实是字符串 ✅

  • 但是代码中的 words = line1.split() 把字符串转换成了列表 ✅

line1 = f.read()           # line1 是字符串 (str)
print(type(line1))         # 如果打印会显示 <class 'str'>

words = line1.split()      # split() 方法把字符串拆分成列表
print(type(words))         # 打印显示 <class 'list'>

第1步:f.read() 返回字符串

python

line1 = f.read()
# line1 的内容是:
# "itheima itcast python\nitheima python itcast\nbeijing shanghai itheima\n..."
# ↑ 这是一个完整的字符串

第2步:.split() 把字符串拆分成列表

python

words = line1.split()
# .split() 的作用:按空白字符(空格、换行、制表符)切割字符串
# 返回一个列表

举例说明 .split() 的效果:

python

# 原始字符串
text = "itheima itcast python"

# 使用 split()
result = text.split()

print(type(result))  # <class 'list'>
print(result)        # ['itheima', 'itcast', 'python']

文件内容(字符串形式):
"itheima itcast python\nitheima python itcast\nbeijing shanghai itheima\n..."

                    ↓ 使用 .split()

拆分后的列表:
['itheima', 'itcast', 'python', 'itheima', 'python', 'itcast', 
 'beijing', 'shanghai', 'itheima', 'shenzhen', 'guangzhou', 
 'itheima', 'wuhan', 'hangzhou', 'itheima', 'zhengzhou', 
 'bigdata', 'itheima']

变量 类型 如何得到
line1 字符串 (str) f.read() 直接返回
words 列表 (list) 对字符串使用 .split() 方法转换而来

记忆要点:

  • f.read() → 字符串

  • 字符串 .split() → 列表

  • 列表 .count() → 统计次数

列表能拆分成字符串,字符串也可以拆分成列表

字符串变列表:用 .split()

python

# 字符串有 split() 方法
text = "itheima python itcast"
words = text.split()  # ✅ 正确
print(words)  # ['itheima', 'python', 'itcast']

列表变字符串:用 .join()

python

# 字符串有 join() 方法,列表没有
words = ['itheima', 'python', 'itcast']
text = ' '.join(words)  # ✅ 正确
print(text)  # "itheima python itcast"

# 错误写法
text = words.join(' ')  # ❌ 错误!列表没有 join() 方法
text = words.split()    # ❌ 错误!列表没有 split() 方法

记忆技巧

  • .split() = 分割 → 把字符串切成列表(从整到碎)

  • .join() = 连接 → 把列表粘成字符串(从碎到整)

text

字符串 ----------split()----------> 列表
  ↑                                  ↓
  └----------join()------------------┘

总结:

  • .split() 只能字符串用(字符串→列表)

  • .join() 可以列表用,但调用对象是字符串(列表→字符串)

  • 列表不能直接用 .split(),会报错!

# 字符串 → 列表
s = "itheima python itcast"
print(f"原始字符串:{s}")

# 方法1:split() 按单词拆分
words = s.split()
print(f"split()后:{words}")  # ['itheima', 'python', 'itcast']

# 方法2:list() 按字符拆分
chars = list(s)
print(f"list()后:{chars}")   # ['i','t','h','e','i','m','a',' ','p',...]

print("---")

# 列表 → 字符串
# 用空格重新合并
new_s = ' '.join(words)
print(f"join()后:{new_s}")   # "itheima python itcast"

# 验证是否和原来一样
print(f"是否相同:{s == new_s}")  # True

字符串的方法:

方法 作用 返回值 是否改变原字符串
split() 分割成列表 列表 否(返回新列表)
strip() 去除两端字符 字符串 否(返回新字符串)

  • split = 分裂 → 字符串变列表(一个变多个)

  • strip = 去除 → 去掉两端多余字符(长度变短)

这两个方法都不会修改原字符串(因为字符串是不可变的),而是返回新的字符串或列表。

更多推荐