0

我是 python 新手。

我有两个文件,一个包含符号(单词),另一个是地图文件。

这两个文件都是文本文件。地图文件确实包含表单提要。

我想在地图文件中找到位于地图文件中包含符号的行上方的行。

我有以下代码。

Osymbolfile="alistofsymbols"
mapfile="amapfile"
maplines = (line.rstrip('\n\f') for line in open(mapfile))
for line in Osymbolfile:
    line = (line.rstrip('\n') )
    print "line= ",line
    linecount = 0
    for index, scanline in enumerate(maplines):
        if line in scanline:
            print "scanline=",scanline
            print "index=",index
        else:
            linecount = linecount + 1
    print "= ",linecount

之后print "index=",index,我试过print maplines[index-1]了,但我得到一个错误。

如何获得第index'th 行上方的行maplines

4

1 回答 1

2

你的maplines对象是一个生成器表达式;这些按需生产项目并且不可索引。

您可以改用列表推导:

maplines = [line.rstrip('\n\f') for line in open(mapfile)]

现在您有了一个可索引的列表对象。更好的是,您现在可以多次循环该对象;你不能用发电机做到这一点。

但是,处理您的情况的正确方法是仅存储前一行

with open(mapfile) as maplines:
    prev = None
    for line in maplines:
        if something in line:
            return prev
        prev = line
于 2013-08-01T19:50:18.437 回答