我需要在文件中标识某些标记可能存在的位置。我开始认为我会使用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中的项必须是用于构建列表的项。那就是如果我有行而不是fileinput.lineno()
我会有一个非空列表,但这不是问题。
上述过程可以简化为列表理解吗?
使用答案,但为了便于阅读而对其进行调整
listOfLines=[lineNumb for lineNumb,dataLine in enumerate(open('myfile')) if 'mystring' in dataLine]
答案 0 :(得分:8)
这个怎么样?
[index for index,line in enumerate(open('myfile.txt')) if 'mystring' in line]