我有一个包含5列的文本文件:
StudentID UserID FirstName LastName NickName
0122334 7727263 John Smith Johnny
8273263 8349734 timmer Jansen tim
我正在尝试在python中读取此文件,并将每个值分配给单独的变量。到现在为止,我已成功阅读了这些内容。但是,我无法分配值。
到目前为止代码:
StudentID = []
UserID = []
FirstName = []
LastName = []
NickName = []
with open(textfile,'r') as f:
lines = f.readlines()
答案 0 :(得分:3)
您可以一次提取所有这些内容:
with open(textfile,'r') as f:
columns = [line.split() for line in f.readlines()]
然后从columns
创建每个列表:
StudentID, UserID, firstNAme, LastNAme, NickName = map(list, zip(*columns))
首先创建一个列表列表,这是一个由给定列逐行分隔的矩阵。然后通过为每列创建一个单独的列表来重新组合(映射)它们。
答案 1 :(得分:1)
f = open(textfile, 'r')
for line in f:
student_id, user_id, first_name, last_name, nick_name = line.split(' ')
StudentId.append(student_id)
UserId.append(user_id)
....
f.close()
这是编写任何东西的非常奇怪的方式。更好的方法是创建类学生,该学生将了解学生的属性以及如何从行
中读取class Student:
def __init__(self, student_id=0, user_id=0, first_name='', last_name='', nickname=''):
self._student_id = student_id
self._user_id = user_id
...
def from_line(self, line):
values = line.split(' ')
self._student_id = int(values[0])
self._user_id = int(values[1])
...
f = open(textfile, 'r')
students = []
for line in f:
students.append(Student())
students[-1].from_line(line)
答案 2 :(得分:1)
with open(textfile,'r') as f:
for line in f.readlines():
student_id ,user_id, first_name, last_name, nick_name = line.split()
StudentID.append(student_id)
UserID.append(user_id)
FirstName.append(first_name)
LastName.append(last_name)
NickName.append(nick_name)
注意:对于命名列表,您使用的是Camel案例约定。在Python中,根据PIP8
定义变量,您应该使用由下划线_
分隔的小写字母。 CamelCase变量用于定义类。
<强>建议:强>
由于这些值属于同一个对象,因此您应按照Dmitry OR的建议维护单个对象列表,只需存储list
列表。
例如:
persons = []
with open(textfile,'r') as f:
for line in f.readlines():
persons.append(line.split())
print persons
# [['0122334', '7727263', 'John', 'Smith', 'Johnny'],
# ['8273263', '8349734', 'timmer', 'Jansen', 'tim']]
在StudentID
,UserID
,您将FirstName
,LastName
,NickName
,0
,1
,分别为2
,3
,4
,5
索引。