将文本文件打印为两个单独的列表

时间:2019-09-13 17:48:06

标签: python-3.x list for-loop text-files

我是Python和stackoverflow的新手:)。我有一个txt文件,需要从中打印。这是一个名为DOB的txt文件,具有以下信息:

Orville Wright 21 July 1988   
Rogelio Holloway 13 September 1988  
Marjorie Figueroa 9 October 1988  
Debra Garner 7 February 1988  

我需要打印并显示如下列表:

 1. Orville Wright  
 2. Regelio Holloway  
 3. ......

列表项

 1. 21 July 1988
 2. 13 September 1988
 3. .......

下面的代码两次打开txt文件,但我认为这无效。救命!

dob = open('DOB.txt', 'r')

for i, line in enumerate(dob, 1):
    name = line.split()                                              
    name_surname = str(i) + "." + " " + name[0] + " " + name[1]      
    print(name_surname)

dob = open('DOB.txt', 'r')

for i, line in enumerate(dob, 1):  
    date = line.split()  
    day_to_year = str(i) + "." + " " + date[2] + " " + date[3] + " " + date[4]  

    print(day_to_year)  
dob.close()  

1 个答案:

答案 0 :(得分:0)

调用read()会读取整个文件,并将读取的光标留在文件的末尾(没有其他要读取的内容)。

一旦读取了文件,则可以使用read()使用seek(0)将读取的光标返回到文件的开头(文档为here)。无需两次打开文件。

使用file.seek跳至文件中的特定位置。但是,请考虑是否真的有必要再次浏览该文件。也许有更好的选择。

解决此问题的另一种方法是读取数据一次,将其保存在适当的列表/变量中,然后根据需要使用。例如,以所需的格式将其打印出来。

PUT /apis/apps/v1/namespaces/{namespace}/deployments/{name}/scale

输出:

#!/usr/bin/python

file = "/Users/rprakash/python/records.txt"

data = open(file, 'r')

for i, line in enumerate(data, 1):
    details = line.split()
    name = details[0] + " " + details[1]
    print str(i) + ". " + name

data.seek(0)

for i, line in enumerate(data, 1):
    details = line.split()
    dob = details[2] + " " + details[3] + " " + details[4]
    print str(i) + ". " + dob