2015-09-26 67 views
1

我有一个文本文件,它看起来像这样Python的文本文件装饰结肠

firstname:lastname:123456789 
somename:somelastname:12312456456 
... 

我希望把每一个名字,姓氏,和身份证到它自己的变量。

这就是我迄今为止所做的。

with open("somefile.txt", 'r') as a: 
    phonebook = a.readlines() 

l = 0 
while (len(phonebook) < l+1): 
    firstname = 
    lastname = 
    number = 

    l++ 

卡在修剪部分。

回答

2

只需将数据存储在列表中,将每行的子列表分割为名称,姓氏和ID。

with open("somefile.txt", 'r') as f: 
    data = [line.strip().split(":") for line in f] 

你也可以使用一个字典,但会有,除非你想要做的名字查找,但即使是这样的名称需要是唯一的,如果你只是想用每一块数据在没有真正的优势循环,而不是全部存储然后用作迭代:

with open("somefile.txt", 'r') as f: 
    for line in f: 
     fn, ln , _id = line.strip().split(":") 
+0

完美! :D谢谢! – ChrisK

+0

没有问题,你是weclome。 –

1
with open("somefile.txt", 'r') as a: 
    for line in a: 
     firstname, lastname, number = line.split(":") 
     number = int(number) 

没有必要将电话簿作为内存中的列表存储在.readlines()中。如果文件很大,那么这会是一个问题,因为您会使用大量内存。您可以直接逐行遍历它。由于str.split方法和元组解包,提取变量非常简单,您可以查看这些。