如何用for循环重复一个函数
How to repeat a function with a for loop
我打开一个文件并用 csv 读取它,我试图将内容移动到一个函数中,以便它可以在其他程序中以这种格式重复使用:
my-dic = []
with open('customer.csv','r') as input_file:
csv_reader = csv.reader(input_file,delimiter = ',')
for line_number, line in enumerate(csv_reader):
if line_number == 0: # skip the header
continue
def customer_file():
my_dic.append({
'First Name':line[1],
'Last name':line[2],
'Age(Years)':int(line[3]),
})
customer_file()
csv 文件有 100 行,并且!我希望为所有 rows.On 调用函数创建字典,只创建文件的最后一行。我读到这是后期绑定,我必须通过在函数中使用默认参数来强制进行早期绑定。我传递了 line_number = 1,作为函数中的参数,这样它将从 csv 文件的 line_number 1 开始,这也不起作用
我如何实现这一点,以便在调用该函数时,创建的字典将包含 csv 文件的所有行,而不仅仅是最后一行
如果您希望简化您的问题,您可以使用列表理解来获得所需的解决方案,方法是使用 next(csv_reader)
以跳过循环的第一次迭代。
import csv
with open('customer.csv','r') as input_file:
csv_reader = csv.reader(input_file,delimiter = ',')
next(csv_reader) # Skip header
my_dic = [{"First Name": line[0], "Last Name": line[1], "Age(Years)": int(line[2])} for line in csv_reader]
print(my_dic)
我还将提供与您提供的解决方案类似的解决方案,因为我无法假定您对 Python 语言有一定了解。附加到 my_dic
字典并不需要使用函数,因此我已将其删除。您可能需要调整数据所在的索引,因为我正在处理我创建的示例数据。
import csv
my_dic = []
with open('customer.csv','r') as input_file:
csv_reader = csv.reader(input_file,delimiter = ',')
next(csv_reader) # Skip header
for n, line in enumerate(csv_reader):
print(line)
my_dic.append({
'First Name':line[0],
'Last name':line[1],
'Age(Years)':int(line[2]),
})
print(my_dic)
根据评论更新
import csv
def dic_append(line):
my_dic.append({"First Name": line[0], "Last Name": line[1], "Age(Years)": int(line[2])})
my_dic = []
with open('customer.csv','r') as input_file:
csv_reader = csv.reader(input_file, delimiter = ',')
next(csv_reader) # Skip header
for line in csv_reader:
dic_append(line)
print(my_dic)
我打开一个文件并用 csv 读取它,我试图将内容移动到一个函数中,以便它可以在其他程序中以这种格式重复使用:
my-dic = []
with open('customer.csv','r') as input_file:
csv_reader = csv.reader(input_file,delimiter = ',')
for line_number, line in enumerate(csv_reader):
if line_number == 0: # skip the header
continue
def customer_file():
my_dic.append({
'First Name':line[1],
'Last name':line[2],
'Age(Years)':int(line[3]),
})
customer_file()
csv 文件有 100 行,并且!我希望为所有 rows.On 调用函数创建字典,只创建文件的最后一行。我读到这是后期绑定,我必须通过在函数中使用默认参数来强制进行早期绑定。我传递了 line_number = 1,作为函数中的参数,这样它将从 csv 文件的 line_number 1 开始,这也不起作用
我如何实现这一点,以便在调用该函数时,创建的字典将包含 csv 文件的所有行,而不仅仅是最后一行
如果您希望简化您的问题,您可以使用列表理解来获得所需的解决方案,方法是使用 next(csv_reader)
以跳过循环的第一次迭代。
import csv
with open('customer.csv','r') as input_file:
csv_reader = csv.reader(input_file,delimiter = ',')
next(csv_reader) # Skip header
my_dic = [{"First Name": line[0], "Last Name": line[1], "Age(Years)": int(line[2])} for line in csv_reader]
print(my_dic)
我还将提供与您提供的解决方案类似的解决方案,因为我无法假定您对 Python 语言有一定了解。附加到 my_dic
字典并不需要使用函数,因此我已将其删除。您可能需要调整数据所在的索引,因为我正在处理我创建的示例数据。
import csv
my_dic = []
with open('customer.csv','r') as input_file:
csv_reader = csv.reader(input_file,delimiter = ',')
next(csv_reader) # Skip header
for n, line in enumerate(csv_reader):
print(line)
my_dic.append({
'First Name':line[0],
'Last name':line[1],
'Age(Years)':int(line[2]),
})
print(my_dic)
根据评论更新
import csv
def dic_append(line):
my_dic.append({"First Name": line[0], "Last Name": line[1], "Age(Years)": int(line[2])})
my_dic = []
with open('customer.csv','r') as input_file:
csv_reader = csv.reader(input_file, delimiter = ',')
next(csv_reader) # Skip header
for line in csv_reader:
dic_append(line)
print(my_dic)