python:关于读取文件的指定行的问题

本文详细介绍了使用Python进行文件读取的各种技巧,包括如何跳过文件头部、按特定行间隔读取以及按照复杂序列读取文件。通过实例展示了列表切片、步长控制和斐波那契数列应用,为读者提供了丰富的文件处理方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先来造一个文件:就叫做 test.txt吧,内容是下面这个样子:

表头
1,数据1
2,数据2
3,数据3
4,数据4
5,数据5
6,数据6
7,数据7

那么我们并不打算把这个表头给读出来

怎么办呢?

先来打开文件:

fileName = 'test.txt'
with open(fileName,'r',encoding='UTF-8') as f:
    lines = f.readlines()
    print(str(type(lines))+'\n'+str(lines))

得到下面的结果:

<class 'list'>
['表头\n', '1,数据1\n', '2,数据2\n', '3,数据3\n', '4,数据4\n', '5,数据5\n', '6,数据6\n', '7,数据7\n']
Process finished with exit code 0

那么 f.readlines()返回的是一个列表.每一项是一行

这就好办了,因为列表是可以切片的嘛

fileName = 'test.txt'
with open(fileName,'r',encoding='UTF-8') as f:
    lines = f.readlines()
    print(str(type(lines))+'\n'+str(lines))
    for i in lines[1:6]:
        print(i.strip('\n'))

这样一切片,就能得到需要的结果了:

<class 'list'>
['表头\n', '1,数据1\n', '2,数据2\n', '3,数据3\n', '4,数据4\n', '5,数据5\n', '6,数据6\n', '7,数据7\n']
1,数据1
2,数据2
3,数据3
4,数据4
5,数据5

Process finished with exit code 0

那么如果我想要隔一行读一行呢?

很简单,使用列表切片的步长就行了:

fileName = 'test.txt'
with open(fileName,'r',encoding='UTF-8') as f:
    lines = f.readlines()
    print(str(type(lines))+'\n'+str(lines))
    for i in lines[1:6:2]:
        print(i.strip('\n'))

<class 'list'>
['表头\n', '1,数据1\n', '2,数据2\n', '3,数据3\n', '4,数据4\n', '5,数据5\n', '6,数据6\n', '7,数据7\n']
1,数据1
3,数据3
5,数据5

Process finished with exit code 0

那么我再搞一下,每次输出的结果的行号是个斐波那契数列...也就是输出 1,1,2,3,5,8行这样,要怎么办呢?

def gap(maxtcl):
    n,a,b=0,0,1
    while n<maxtcl:
        yield b
        a,b=b,a+b
        n=n+1

fileName = 'test.txt'
with open(fileName,'r',encoding='UTF-8') as f:
    lines = f.readlines()
    print(str(type(lines))+'\n'+str(lines))

for i in gap(5):
    print(lines[i])

结果:

<class 'list'>
['表头\n', '1,数据1\n', '2,数据2\n', '3,数据3\n', '4,数据4\n', '5,数据5\n', '6,数据6\n', '7,数据7\n']
1,数据1

1,数据1

2,数据2

3,数据3

5,数据5


Process finished with exit code 0

我们思路现在转换到按照列表的索引进行单个元素的输出之后,再考虑一个问题,如何让输出的间隔变成1,2,3这样,也就是输出1,2,4,7行这样

fileName = 'test.txt'
with open(fileName,'r',encoding='UTF-8') as f:
    lines = f.readlines()
    print(str(type(lines))+'\n'+str(lines))
linenum=1
for i in range(1,5):
    print(lines[linenum])
    linenum=linenum+i
<class 'list'>
['表头\n', '1,数据1\n', '2,数据2\n', '3,数据3\n', '4,数据4\n', '5,数据5\n', '6,数据6\n', '7,数据7\n']
1,数据1

2,数据2

4,数据4

7,数据7


Process finished with exit code 0

emmmm........暂时就想到这么多了,have fun :)

转载于:https://my.oschina.net/avatus/blog/2248710

Python 是一种功能强大的编程语言,可以使用它来获取CSV文件指定。CSV文件是使用逗号分隔的值文件,其中每一表示一个数据记录,每一列表示该记录的不同属性。以下是如何在Python中获取指定的方法: 首先,我们需要使用Python中的CSV模块来读取CSV文件。使用CSV模块中的Reader函数将CSV文件Python中。 接下来,我们可以使用循环遍历CSV文件中的并将它们存储在列表中。在获取所有之后,我们可以使用Python中的列表索引来访问指定。例如,如果我们想获取第5,我们可以使用列表索引[4]来访问它。 以下是一个简单的Python代码示例,它演示了如何获取CSV文件中的指定: ```python import csv # 打开CSV文件 with open('file.csv', 'r') as csv_file: # 创建CSV读取器 csv_reader = csv.reader(csv_file) # 存储所有的列表 all_rows = [] # 遍历CSV文件中的每一并将它们存储在列表中 for row in csv_reader: all_rows.append(row) # 获取第5 row_5 = all_rows[4] # 打印第5 print(row_5) ``` 在上面的代码中,我们打开名为“file.csv”的CSV文件并创建一个CSV读取器。然后,我们使用for循环遍历文件中的每一并将它们存储在名为“all_rows”的列表中。最后,我们使用索引[4]从列表中获取第5并将其存储在名为“row_5”的变量中,然后打印它。 总之,Python可以轻松获取CSV文件中的指定,使用CSV模块进读取,并使用Python列表索引来访问这些
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值