为了概括阅读多个标题行的任务并提高可读性,我使用方法提取。 假设您想要将coordinates.txt的前三行标记为头信息。
例
coordinates.txt
---------------
Name,Longitude,Latitude,Elevation, Comments
String, Decimal Deg., Decimal Deg., Meters, String
Euler's Town,7.58857,47.559537,0, "Blah"
Faneuil Hall,-71.054773,42.360217,0
Yellowstone National Park,-110.588455,44.427963,0
然后方法提取允许您指定您想要对标题信息执行的操作(在此示例中,我们只是根据逗号将标题行标记,并将其作为列表返回,但还有空间可以执行更多操作)。
def __readheader(filehandle, numberheaderlines=1):
"""Reads the specified number of lines and returns the comma-delimited
strings on each line as a list"""
for _ in range(numberheaderlines):
yield map(str.strip, filehandle.readline().strip().split(','))
with open('coordinates.txt', 'r') as rh:
# Single header line
#print next(__readheader(rh))
# Multiple header lines
for headerline in __readheader(rh, numberheaderlines=2):
print headerline # Or do other stuff with headerline tokens
产量
['Name', 'Longitude', 'Latitude', 'Elevation', 'Comments']
['String', 'Decimal Deg.', 'Decimal Deg.', 'Meters', 'String']
如果coordinates.txt包含另一个标题,只需更改numberheaderlines。最重要的是,__readheader(rh, numberheaderlines=2)正在做什么,我们避免了必须弄清楚或评论为什么接受的答案的作者在他的代码中使用next()的模糊性。