Python3:使用动态变量解析文本并搜索部分…;

Python3:使用动态变量解析文本并搜索部分…;,python,regex,python-3.x,search,find,Python,Regex,Python 3.x,Search,Find,我有一个文本文件,它由几个部分组成。节始终以非空格开头。而小节总是从空格开始。基于input.txt,以下是我的预期结果。在本例中,我试图搜索“101”,如果101出现在第节或第节中。我想显示带有小节的部分。我试图解析该节并将其存储在动态变量中。但我不知道如何在变量中动态存储节 Input.txt test1 text101 aaa bbb ccc test2 text101 aaa bbb ccc ddd 101 test3 text101 - 123 tes

我有一个文本文件,它由几个部分组成。节始终以非空格开头。而小节总是从空格开始。基于input.txt,以下是我的预期结果。在本例中,我试图搜索“101”,如果101出现在第节或第节中。我想显示带有小节的部分。我试图解析该节并将其存储在动态变量中。但我不知道如何在变量中动态存储节

Input.txt

test1 text101
  aaa
  bbb
  ccc

test2 text101
  aaa
  bbb
  ccc
  ddd 101

test3 text101 - 123

test4 text123
  aaa
  bbb
  ccc
  ddd 101

test5 text456
  aaa
  bbb
  ccc

test6 101
  qqq
  ppp

test7 text101 - 123
test8 text102 - 123
Test9 text101 - 123
Test10 text102 - 123
Python 3.0代码:

find_txt = '101'
result = []
f = open(r'\\input.txt')
for line in f:
    if (line[:1]!=' '):
        result.append(line)

print ('Result:')
for element in result:
    if find_txt in element:
        print (element, end='')
输出:

test1 text101
  aaa
  bbb
  ccc

test2 text101
  aaa
  bbb
  ccc
  ddd 101

test3 text101 - 123

test4 text123
  aaa
  bbb
  ccc
  ddd 101

test6 101
  qqq
  ppp

test7 text101 - 123

Test9 text101 - 123

我建议使用其他更具python风格的方法来解决这个问题:将文件分成多个部分,过滤掉不需要的内容。算法是这样的:

  • 将整个文件(使用
    Read
    函数)读取到一个变量(比如
    content
    )。它将是一个字符串变量
  • 使用适当的正则表达式(不分空白起始行)将字符串拆分为包括子部分在内的部分。您将有一个字符串列表
  • 使用列表理解过滤掉不需要的内容。你会有一个清单
  • 使用
    join
    string函数将列表与新行字符连接起来 祝你好运

    顺便说一句,我可以提供代码,但您可能想先解决它:)

    不要将其存储在“动态变量”中,而是将其存储在字典中!