如何获取从文本文件中随机选取的行对应的行号?
解决方法
你可以用enumerate()函数在读取文件时直接为每一行绑定行号(从1开始计数),再随机选取带行号的行数据,这样就能同时拿到行号和内容:
import random # 用with语句安全读取文件,自动关闭文件句柄 with open('my_file.txt', 'r', encoding='utf-8') as file: # enumerate的start参数设为1,让行号从1开始 numbered_lines = list(enumerate(file, start=1)) # 随机选取一个带行号的行(返回的是(行号, 内容)的元组) line_num, random_line = random.choice(numbered_lines) print(f"行号:{line_num},内容:{random_line}")
说明
enumerate(file, start=1)会遍历文件的每一行,同时为每行分配一个从1开始递增的行号,返回的是形如(行号, 行内容)的元组。- 用
with语句处理文件是更规范的写法,避免忘记关闭文件导致资源泄漏。 - 如果你的文件中存在重复内容,这种方法能准确返回随机选中的那一行的真实行号;而如果用
lines.index(random_line) + 1的方式,只会返回第一个匹配内容的行号,存在误差。
比如运行后选中Suits时,会输出:行号:3,内容:Suits,完全符合你的示例要求。
内容的提问来源于stack exchange,提问作者reinhardt
相关产品推荐
相关产品推荐

