在这个程序中我试图让dataPrinter()函数只返回一组数据。现在该程序运行良好,但我希望它只返回一个包含gen1和gen2数据的数据集。如下所示,我已经尝试创建处理函数,返回每个数据集,然后在生成器中组合它们。但那没用。
import os
os.chdir('C:\Users\U2970\Desktop')
fileData = open('SOUTH_06_01_2015_SECFILE.CSV','rb')
##fullSet = open('2015_FILES_COMBINED.CSV','rb')
columns_no = 3
def headerBody(columns_no):
columns = [] ## returns the created header of a csv file
for i in range(columns_no):
text = raw_input("Enter column #%d name: " % i)
columns.append(text)
return columns
def dataBody(columns_no):
segmentLines = [] ## returns the body of the csv file
for line in fileData.readlines():
segmentLine = line.split(',')
segmentLines.append(segmentLine[:columns_no])
return segmentLines
def dataPrinter(): ## How can I make this function return one set
## of data that combines both the data from
## gen1 and gen2?
gen1 = headerBody(columns_no)
gen2 = dataBody(columns_no)
print','.join(gen1)
for row in gen2:
print','.join(row)
dataPrinter()
## Data handlers I made that give me very limited success ##
def headerHandler():
gen1 = headerBody(columns_no)
return','.join(gen1)
def bodyHandler():
gen2 = dataBody(columns_no)
for row in gen2:
return','.join(row)
def combinedPrinter():
newList = []
gen1 = headerHandler()
gen2 = bodyHandler()
for line in gen1:
newList.append(line)
for line in gen2:
newList.append(line)
return newList
答案 0 :(得分:2)
Python中最好的部分是动态创建新对象非常容易。您可以使方法返回两个值的元组。
def dataPrinter():
gen1 = headerBody(columns_no)
gen2 = dataBody(columns_no)
return gen1, gen2
从调用方面,您可以将它们作为单个元组对象获取,也可以解压缩为两个变量。
response = dataPrinter()
print response[0] # prints header
print response[1] # prints body
或者
header, body = dataPrinter()
print header
print body
print header + '\n' + body
额外的琐事: -
如何在python中交换两个变量的值?
a,b = b,a
。就是这样。