Python - 将文件导入NamedTuple

Apa*_*che 5 python

最近我有一个关于数据类型的问题.
从那时起,我一直在尝试使用NamedTuples(或多或少成功).

我目前的问题:
- 如何将文件中的行导入新元组,
- 如何将用空格/制表符(/等)分隔的值导入元组的给定部分?

喜欢:

Monday  8:00    10:00   ETR_28135   lh1n1522    Computer science    1     
Tuesday 12:00   14:00   ETR_28134   lh1n1544    Geography EA    1  
Run Code Online (Sandbox Code Playgroud)

第一行应该进入元组[0].第一个数据:元组[0] .day; 第二名:元组[0] .start; ..等等.
当新行开始时(即两个TAB(\ t)),启动一个新的元组,如元组[1].

我用它来分隔数据:

with open(Filename) as f:
    for line in f:
        rawData = line.strip().split('\t')  
Run Code Online (Sandbox Code Playgroud)

剩下的逻辑仍然缺失(元组的填充).

(我知道.这个问题,最近的问题实际上是低级别的.但是,希望这些也会帮助其他人.如果你觉得这不是一个真正的问题,太简单,不能成为一个问题等等,只需投票给关闭.谢谢你的理解.)

mg.*_*mg. 12

这些数据库文件称为逗号分隔值,即使它们实际上没有用逗号分隔.Python有一个方便的库csv,可以让你轻松阅读这些文件

这是一个稍微修改过的文档示例

csv.register_dialect('mycsv', delimiter='\t', quoting=csv.QUOTE_NONE)
with open(filename, 'rb') as f:
    reader = csv.reader(f, 'mycsv')
Run Code Online (Sandbox Code Playgroud)

通常你一次只能工作一行.如果你需要一个元组中的整个文件,那么:

t = tuple(reader)
Run Code Online (Sandbox Code Playgroud)

编辑

如果你需要按名称访问字段,你可以使用cvs.DictReader,但我不知道究竟是如何工作的,我不能在这里测试它.

编辑2

看看这些名字是什么,我有点过时了.关于namedtuple如何使用csv模块有一个很好的例子:

EmployeeRecord = namedtuple('EmployeeRecord', 'name, age, title, department, paygrade')

import csv
for line in csv.reader(open("employees.csv", "rb")):
    emp = EmployeeRecord._make(line)
    print emp.name, emp.title
Run Code Online (Sandbox Code Playgroud)