我想在文件中找到某个字符串的位置,以便知道我应该从哪里开始编辑。
目前,我正在使用re
模块转换bool列表中的文件,并使用index
函数获取位置。
问题:是否有更好/更短的方法来实现这一目标?
在这个例子中,我想找到第一行,其中出现字母“b”。
示例文件:
a
b
c
b
代码:
#!/usr/bin/python
import re
infile = open("examplefile","r")
indata = infile.readlines()
infile.close()
finder = re.compile("b")
matches = [True if finder.search(s) else False for s in indata]
print(matches.index(True))
输出:
1
答案 0 :(得分:2)
我们可以使用生成器表达式,如此
with open("Input.txt") as in_file:
print(next(idx for idx, line in enumerate(in_file) if "b" in line))
# 1
注意:如果在文件中找不到要搜索的字符串,则会引发StopIteration
。
答案 1 :(得分:0)
只是为了完整性,如果不必在python中执行,你可以使用bash的grep
。
grep -nr 'string_to_search' your_file
它会在你的比赛前返回行数。