读取文本文件并分配值

时间:2016-08-22 16:24:48

标签: python python-2.7

我有一个包含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()

3 个答案:

答案 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']]

StudentIDUserID,您将FirstNameLastNameNickName01,分别为2345索引。