以下代码导致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())
据推测,这只是运行一次功能。如何在文档长度上运行函数?感谢。
答案 0 :(得分:3)
您需要创建一个列表来附加您的项目。您的函数只在每个循环中运行一次,因为您在第一次迭代时title /?
。
return
或者您可以保持相同的逻辑并使用{{1}}来创建生成器:
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]
请注意,后一个示例会保持文件处于打开状态,直到清除生成器。
答案 1 :(得分:1)
您没有正确迭代文件的行。以下代码将读取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)
请注意,我们在对行进行迭代之前读取并拆分输入文件,并且我们为每一行创建一个结果数组,以及为每个表追加数组的整个数组。
不确定这是不是你想要做的,但你发布的内容看起来很奇怪......