如何在python中逐行搜索一个又一个字符串

2024-10-01 07:38:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我创建了一个文件,内容如下

blah blah blah
blah blah blah
string_A_to_be_searched
blah blah blah
string_B_to_be_searched
string_B_to_be_searched
blah blah blah
string_A_to_be_searched

我想搜索字符串A\u to\u be\u search,返回行号

然后,只有在找到要搜索的字符串后,我才能搜索要搜索的字符串。我一直在搜索要搜索的字符串,直到再次命中要搜索的字符串

我想使用PYTHON。由于Python只在一个范围(由集合指定)内使用item实现for循环,并且my set(枚举(文件))始终从0索引到末尾,因此搜索将从第0行而不是从找到文件第一个实例的行继续搜索

我试过的是这样的。我在一个类中有一个代码块,它的lineNumber、lineFound是要使用的变量

file = open('fileName.txt')
lines = file.readline()

for lineNumber, line in enumerate(Lines):
    if string_A_to_be_searched in line: 
          self.lineNumber = lineNumber
          for lineNumber, line in enumerate(Lines):
                if string_B_to_be_searched in line: 
                      self.lineNumber = lineNumber
                      self.lineFound.append(lineNumber)

Tags: 文件to字符串inselfforstringline
1条回答
网友
1楼 · 发布于 2024-10-01 07:38:45

我能够获取您的示例并创建一个脚本,它不仅解决了您的问题,而且消除了第二个循环。希望这有帮助

lines = []
with open("sample.txt") as filen:
  lines = filen.readlines()

string_A_found = False
for lineno, line in enumerate(lines):
  search_string = "string_A_to_be_searched" if not string_A_found else "string_B_to_be_searched"
  if search_string in line:
    print(f"{search_string} found at {lineno}")
    string_A_found = True if search_string == "string_A_to_be_searched" else False
  if string_A_found and "string_A_to_be_searched" in line:
    print(f"String A found again at {lineno}")

其输出为:

string_A_to_be_searched found at 2
string_B_to_be_searched found at 4
string_A_to_be_searched found at 7

相关问题 更多 >