0

我需要确定文件中某些标记可​​能存在的位置。我开始认为我会使用 list.index 但我很快发现它返回第一个(并且只有第一个)项目。所以我决定实施我自己的解决方案

count=0
docIndex=[]
for line in open('myfile.txt','r'):
    if 'mystring' in line:
        docIndex.append(count)
    count+=1

但这是 Python 对的。必须有一个更简单的解决方案,因为它是 Python。在这个网站和网络上搜寻我想出了一些更好的东西

newDocIndex=[]
for line in fileinput.input('myfile',inplace=1):
    if 'mystring' in line:
    newDocIndex.append(fileinput.lineno())

我知道这是太多的信息,但自从我昨晚完成了评分期末考试后,我觉得很好——这是 Python,我们希望在今年夏天取得一些进展——让我们试试列表推导

所以我这样做了:

[fileinput.lineno() for line in fileinput.input('myfile',inplace=1) if 'mystring' in line]

并得到一个空列表。所以我首先猜测问题是for中的项目必须是用于构建列表的项目。也就是说,如果我有 line 而不是fileinput.lineno()我会有一个非空列表,但这不是问题。

上述过程可以简化为列表理解吗?

使用答案但对其进行调整以提高可读性

listOfLines=[lineNumb for lineNumb,dataLine in enumerate(open('myfile')) if 'mystring' in dataLine]
4

1 回答 1

8

那这个呢?

[index for index,line in enumerate(open('myfile.txt')) if 'mystring' in line]
于 2009-05-07T16:07:15.573 回答