1

我是 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()  

4

1 回答 1

0

调用 read() 读取整个文件并将读取光标留在文件末尾(没有更多内容可读取)。

读取文件后,您可以使用 read() 使用 seek(0) 将读取光标返回到文件的开头(文档在此处)。无需打开文件两次。

使用file.seek跳转到文件中的特定位置。但是,考虑一下是否真的有必要再次遍历文件。也许有更好的选择。

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

#!/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

输出:

1. Orville Wright
2. Rogelio Holloway
3. Marjorie Figueroa
4. Debra Garner
1. 21 July 1988
2. 13 September 1988
3. 9 October 1988
4. 7 February 1988
于 2019-09-13T18:18:26.220 回答