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

11 浏览
0 Comments

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

我有一个由几个部分组成的文本文件。部分总是以非空格字符开头,子部分总是以空格开头。根据input.txt文件,以下是我期望的结果。在这个例子中,我试图搜索“101”,如果101出现在部分或子部分中,我想显示带有子部分的部分。我试图解析部分并将其存储在动态变量中。但我不知道如何以动态方式将部分存储在变量中。

输入.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

0
0 Comments

Python3: Parsing text using dynamic variable and search the section …

问题的原因:

在解析文本时,如果需要根据特定规则将文本分割成不同的部分,并且需要根据某些条件过滤掉不需要的内容,这可能会导致代码变得冗长和难以维护。

解决方法:

一种较为Pythonic的解决方法是将文件分成不同的部分,并过滤掉不需要的内容。具体算法如下:

1. 将整个文件使用read函数读取到一个变量中(假设为content),这将得到一个字符串变量。

2. 使用适当的正则表达式(以无空格开头的行为分割)将字符串分割成包括子部分的部分列表。这将得到一个字符串列表。

3. 使用列表推导式过滤掉不需要的内容。这将得到一个新的列表。

4. 使用join字符串函数将列表与换行符连接起来。这将得到一个包含过滤后内容的字符串。

代码示例:

import re
# 读取文件内容
with open('file.txt', 'r') as file:
    content = file.read()
# 使用正则表达式分割字符串
sections = re.split(r'\n(?=\S)', content)
# 使用列表推导式过滤内容
filtered_sections = [section for section in sections if 'unwanted' not in section]
# 连接列表并使用换行符分隔
result = '\n'.join(filtered_sections)
print(result)

祝你好运!

ps. 我可以提供代码,但你可能希望先自己尝试一下 🙂

0