Python3: 使用动态变量解析文本并搜索部分...
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
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. 我可以提供代码,但你可能希望先自己尝试一下 🙂