如何为文档长度运行函数

2024-03-29 09:55:05 发布

您现在位置:Python中文网/ 问答频道 /正文

以下代码产生2\n 4\n 6\n 8\n

with open('test.csv','r')as document:
    for line in document:
        line=line.split(',')
        for item in line:
            item=item.replace('\n','')
            item=int(item)*2
            print(item)

然而,当我尝试使用它作为一个函数如下,结果只有2。你知道吗

def results():
    with open('test.csv','r')as document:
        for line in document:
            line=line.split(',')
            for item in line:
                item=item.replace('\n','')
                item=int(item)*2
                return item

print(results())

大概这只是运行函数一次。如何在文档长度内运行函数?谢谢。你知道吗


Tags: csv函数intestforaswithline
2条回答

您没有正确地迭代文件的行。下面的代码将读取一个cvs文件并返回一个数组,每个数组的值都是平方。例如,如果输入文件看起来像:

1,2,3
4,5,6
7,8,9

输出为:

[[1,4,9],[16,25,36],[49,64,81]]

参见示例:

def results():
    arrayOfResults = []
    with open('test.csv','r')as document:
        lines = document.read().split("\n")
        for line in lines:
            items=line.split(',')
            resultsForThisLine = []
            for item in items:
                resultsForThisLine.append(int(item)**2)
            arrayOfResults.append(resultsForThisLine)
print(arrayOfResults)

请注意,在对行进行排序之前,我们读取并拆分了输入文件,并为每行创建了一个结果数组,同时为整个表创建了一个数组,并将每行的数组附加到该数组中。你知道吗

不知道这是否正是你想做的,但你张贴的看起来很奇怪。。。你知道吗

你需要创建一个列表来附加你的项目。您的函数只在每个循环中运行一次,因为您在第一次迭代时return。你知道吗

def results():
    items = list()
    with open('test.csv','r')as document:
        for line in document:
            line=line.split(',')
            for item in line:
                item=item.replace('\n','')
                item=int(item)*2
                items.append(item)
    return items

In [6]: results()
Out[6]: [2, 4, 6, 8]

或者您可以保持相同的逻辑并使用yield创建生成器:

def results():
    with open('test.csv','r')as document:
        for line in document:
            line=line.split(',')
            for item in line:
                item=item.replace('\n','')
                item=int(item)*2
                yield item


In [4]: [i for i in results()]
Out[4]: [2, 4, 6, 8]

注意,后一个示例在清理生成器之前保持文件打开。你知道吗

相关问题 更多 >