如何使数据文件中的每一行成为元组列表中的元组?

时间:2016-12-09 01:02:32

标签: python list tuples data-files

我有一个名为CustomerList.txt的文本文件,看起来像这样

134998,Madison,Foxwell,825 John Street,Staunton,VA,24401,6655414998

The end result should be like this

with open("CustomerList.txt", "r") as fin:
    ID, Firstname, Lastname, Address, City, State, Zip, Phone = zip(*[l.split() for l in fin.readlines()])

这就是我到目前为止所得到的,但是我得到一个错误,说我需要超过3个值才能升级。我昨天刚开始使用元组,所以请为这个新手尽可能保持基本。如果你可以包括一个解释,为什么它的工作会很棒!

步骤1:数据文件中的每一行都应成为元组列表中的元组(或列表中的列表)。 It would need to be before what I created in the last program which is this.

第2步: 在返回函数内部,我需要获取一个ID号(如134998)来搜索匹配项,如果找到匹配项,则将其作为元组/列表返回,如果不返回空元组/列表。它们可以是字符串,因为它们不是计算。

1 个答案:

答案 0 :(得分:0)

希望以下内容能让您入门:

首先,默认情况下split(),按空格分割(即空格),并希望用逗号分割 - 所以将其更改为:.split(',') ...

另外,我运行了rstrip()来删除new_line字符(\n)。

此外,您希望将标题压缩到每一行而不是整体数据。你当前的循环'循环线(每个都包含一个单独的数据条目),因此zip需要在其中(拉链每条单独的行)而不是在它之外(即不拉链)整个数据)。此外,我个人发现压缩数组比分配长列表变量更容易(我不确定这是否真的有效)。

这就是我从第一步开始的方式:

with open("positionfile.txt", "r") as fin:
    header = ['ID', 'Firstname', 'Lastname', 'Address', 'City', 'State', 'Zip', 'Phone']
    print [zip(header,l.rstrip().split(',')) for l in fin.readlines()]