首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从CSV文件中提取特定行和列

从CSV文件中提取特定行和列
EN

Code Review用户
提问于 2016-09-22 15:30:02
回答 1查看 9.6K关注 0票数 3

我编写了一个函数来选择性地从文件中提取数据。我只想从某一行中提取,并且只提取给定的行。

当我需要处理大型文件时,将此函数转换为生成器会提高开销吗?

代码语言:javascript
复制
import itertools
import csv

def data_extraction(filename,start_line,lenght,span_start,span_end):
    with open(filename, "r") as myfile:
        file_= csv.reader(myfile, delimiter=' ')  #extracts data from .txt as lines
        return (x for x in [filter(lambda a: a != '', row[span_start:span_end]) \
        for row in itertools.islice(file_, start_line, lenght)])
EN

回答 1

Code Review用户

回答已采纳

发布于 2016-09-22 19:32:08

在生成器

中使用圆括号

此外,x for x in也没有必要:

代码语言:javascript
复制
return (filter(lambda a: a != '', row[span_start:span_end]) \
    for row in itertools.islice(file_, start_line, lenght))

如果使用Python2,则应该使用itertools.ifilter,因为它返回生成器,而filter返回列表。

总的来说,函数是非常清楚的,我建议您按照PEP8约定将您的论证列表进行空间设置。还研究了更容易记住的参数格式,比如f(file, line_range, inline_range),其中两个元组替换了4个参数。

票数 4
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/142142

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档