【发布时间】:2017-11-16 02:56:12
【问题描述】:
所以,我有这个巨大的文本文件。我需要查找一个字符串,当我匹配它时,我需要返回几行(在当前行之上)并搜索另一个字符串并从包含第二个字符串的那一行中提取一些信息。如何使用正则表达式匹配在 Python 中执行此操作? 我正在尝试做这样的事情。
substr1 = re.compile("ACT",re.IGNORECASE)
substr2 = re.compile(vector,re.IGNORECASE)
try:
with open (filepath, 'rt') as in_file:
for linenum, line in enumerate(in_file):
if substr2.search(line) != None:
print(linenum,line)
# Code to trace back a few lines to look for substr1
break
except FileNotFoundError: # If the file not found,
print("pattern not found.") # print an error message.
当我匹配第一个字符串并寻找第二个字符串的第一次出现时,这有点像我想向后阅读它。行数各不相同,因此我不能使用我认为的 dequeue 选项。我对 Python 完全陌生。 任何帮助表示赞赏,谢谢! 正在添加我正在阅读的示例日志文件。
X 123
X 1234
X 12345
Vector1
----
-----
-----
X 1231
X 12344
X 123456
vector a
vector b
vector c
vector d
-------
-------
Vector
----
-----
-----
X 1233
X 12345
X 123451
Vector2
字符串 1:Vector
字符串 2:X
输出应该是X 123456
【问题讨论】:
-
“少数”的界限是什么?
-
另外,
vector是什么?是什么阻止您搜索substr1,然后向下查找几行以查找substr2? -
几行大约是 100 行(取决于向量所在的位置),向量是我要查找的第一个字符串。然后我应该找到上面的第二个字符串(而不是向下)此行包含矢量。
-
你能给个向量样本吗?我仍然不明白你为什么不按其他顺序搜索。如果找不到第二个匹配项,请继续。
-
“少数”有 hard 上限吗?例如,我可以说它永远不会出现超过 200 行吗?
标签: python python-3.x