Python 将文件数据转换为列表
我有一个关于员工数据样本的文件。第一行是姓名,第二行是工资,第三行是人寿保险选择(Y/N),第四行是健康保险选择(PPOI,PPOF,None),并且重复。下面是该文件的一个片段:Python 将文件数据转换为列表,python,list,python-3.x,Python,List,Python 3.x,我有一个关于员工数据样本的文件。第一行是姓名,第二行是工资,第三行是人寿保险选择(Y/N),第四行是健康保险选择(PPOI,PPOF,None),并且重复。下面是该文件的一个片段: Joffrey Baratheon 190922 Y PPOI Gregor Clegane 47226 Y PPOI Khal Drogo 133594 N PPOI Hodor 162581 Y PPOF Cersei Lannister 163985 N PPOI Tyrion Lannister 109253
Joffrey Baratheon
190922
Y
PPOI
Gregor Clegane
47226
Y
PPOI
Khal Drogo
133594
N
PPOI
Hodor
162581
Y
PPOF
Cersei Lannister
163985
N
PPOI
Tyrion Lannister
109253
N
PPOF
Jorah Mormont
61078
Y
None
Jon Snow
123222
N
None
def fileread(text):
in_file = open(text, "r")
permlist = []
x = 1
templist = []
for line in in_file:
line = line.strip()
templist.append(line)
if x == 4:
permlist.append(templist)
templist = []
x = 1
else:
x+=1
return (permlist)
def main ():
EmpData = fileread("EmployeeData.txt")
index = 0
print (EmpData[index])
如何获取此文件数据并将每个数据类型(姓名、工资、人寿保险、健康保险)提取到四个单独的列表中?目前,我的代码正在按员工创建多维列表,但我最终想要四个单独的列表。我目前的代码如下:
Joffrey Baratheon
190922
Y
PPOI
Gregor Clegane
47226
Y
PPOI
Khal Drogo
133594
N
PPOI
Hodor
162581
Y
PPOF
Cersei Lannister
163985
N
PPOI
Tyrion Lannister
109253
N
PPOF
Jorah Mormont
61078
Y
None
Jon Snow
123222
N
None
def fileread(text):
in_file = open(text, "r")
permlist = []
x = 1
templist = []
for line in in_file:
line = line.strip()
templist.append(line)
if x == 4:
permlist.append(templist)
templist = []
x = 1
else:
x+=1
return (permlist)
def main ():
EmpData = fileread("EmployeeData.txt")
index = 0
print (EmpData[index])
计算总行数,除以四,得到要添加到列表中的人数
i = 0
while i < num_of_people:
for a in range(0, num_of_people+1):
namelist.append(i)
i += 1
salarylist.append(i)
i +=1
...
i=0
而我的人数是:
对于范围内的(0,人数+1):
名称列表。附加(i)
i+=1
salarylist.append(i)
i+=1
...
像这样拆分数据时要小心。很容易弄糊涂。
您最好将这些数据存储到数据库中。计算总行数,除以四,得到要添加到列表中的人数
i = 0
while i < num_of_people:
for a in range(0, num_of_people+1):
namelist.append(i)
i += 1
salarylist.append(i)
i +=1
...
i=0
而我的人数是:
对于范围内的(0,人数+1):
名称列表。附加(i)
i+=1
salarylist.append(i)
i+=1
...
像这样拆分数据时要小心。很容易弄糊涂。
您最好将这些数据存储到数据库中。您可以使用如下4种列表理解:
with open("file.txt",'r') as f:
lines = f.readlines()
name_list = [lines[i].rstrip() for i in range(0,len(lines),4)]
salary_list = [lines[i].rstrip() for i in range(1,len(lines),4)]
life_ins_list = [lines[i].rstrip() for i in range(2,len(lines),4)]
health_ins_list = [lines[i].rstrip() for i in range(3,len(lines),4)]
您可以使用如下4种列表理解:
with open("file.txt",'r') as f:
lines = f.readlines()
name_list = [lines[i].rstrip() for i in range(0,len(lines),4)]
salary_list = [lines[i].rstrip() for i in range(1,len(lines),4)]
life_ins_list = [lines[i].rstrip() for i in range(2,len(lines),4)]
health_ins_list = [lines[i].rstrip() for i in range(3,len(lines),4)]
您可以使用
itertools
库中的islice
。它将允许您一次迭代4行的批
from itertools import islice
EmpData = []
headers = ['name', 'salary', 'life insurance', 'health insurance']
record = {}
counter = 1
with open('data.txt', 'r') as infile:
while counter>0:
lines_gen = islice(infile, 4)
counter = 0
hasLines = False;
for line in lines_gen:
record[headers[counter]] = line.strip()
counter += 1
EmpData.append(record)
index = 0
print (EmpData[index])
正如有人在这篇文章中抱怨学术上的不诚实行为一样,我想澄清的是,这是一个生产代码片段的简化版本,其灵感来源于以下答案: 您可以使用
itertools
库中的islice
。它将允许您一次迭代4行的批
from itertools import islice
EmpData = []
headers = ['name', 'salary', 'life insurance', 'health insurance']
record = {}
counter = 1
with open('data.txt', 'r') as infile:
while counter>0:
lines_gen = islice(infile, 4)
counter = 0
hasLines = False;
for line in lines_gen:
record[headers[counter]] = line.strip()
counter += 1
EmpData.append(record)
index = 0
print (EmpData[index])
正如有人在这篇文章中抱怨学术上的不诚实行为一样,我想澄清的是,这是一个生产代码片段的简化版本,其灵感来源于以下答案: 这对我来说是非常有效的!我唯一的另一个问题是删除“\n”字符。要使用rstrip(),我将把它放在哪里?当我将其放置为lines=f.readlines().rstrip(“\n”)时,我会得到一个错误。这对于我来说非常有用!我唯一的另一个问题是删除“\n”字符。要使用rstrip(),我将把它放在哪里?当我将其放置为lines=f.readlines().rstrip(“\n”)时,会收到一个错误。请停止破坏此帖子。内容,连同答案,组成了一个新的整体,不应该再被撕开。停止破坏这篇文章。内容与答案一起构成了一个新的整体,不应再被撕裂。