Python 读取 TXT 如何按照关键行提取内容
比如我有一个文本 A.txt;内容为:
[测试]
你好
你很好
[正式]
我好
我很好
我想用 Python 读取这个文本 并且呢 把”[测试]”下面的两行自动放入一个变量当中,把”[正式]”下面的内容放入另外一个变量中,这个”测试”和”正式”可以固定预先写死,想问下有哪些实现方式,谢谢
比如我有一个文本 A.txt;内容为:
[测试]
你好
你很好
[正式]
我好
我很好
我想用 Python 读取这个文本 并且呢 把”[测试]”下面的两行自动放入一个变量当中,把”[正式]”下面的内容放入另外一个变量中,这个”测试”和”正式”可以固定预先写死,想问下有哪些实现方式,谢谢
“`
import os
testArr = []
formalArr = []
rs = os.path.exists(‘./test.txt’)
if rs:
file_handler = open(‘./test.txt’, mode=’r’,encoding=’utf-8′)
contents = file_handler.readlines()
for line in contents:
line = line.strip(‘n’)
if'[测试]’==line:
isTest =True
continue
if'[正式]’==line:
isTest =False
continue
if isTest:
testArr.append(line)
else:
formalArr.append(line)
print(testArr)
print(formalArr)
“`
随便写了下,如果有好几个[],isTest 改成个数字或者字符串,下面判断往对应的列表里放就行了
cf = ConfigParser.ConfigParser(allow_no_value=True)
所以还是 X-Y 问题
find={ “[测试]”:[],”[正式]”:[],}
def get(some,store):
if items[i].strip()==some and i+1<len(items):
for v in items[i+1:]:
if v[0]!='[‘:
store.append(v.strip())
for i in range(len(items)):
if items[i].strip() in list(find.keys()):
get(items[i].strip(),find[items[i].strip()])
with open(“/Users/yx/PycharmProjects/question/a.txt”) as fr:
items=fr.readlines()
for i in range(len(items)):
if items[i].strip() in list(find.keys()):
get(items[i].strip(),find[items[i].strip()])
[test2]
key3=value3
key4
[[email protected] tmp]# cat test.py
import ConfigParser
cf = ConfigParser.ConfigParser(allow_no_value=True)
cf.read(“./ini.ini”)
print(cf.sections())
print(cf.options(“test1”))
print(cf.items(“test1”))
[[email protected] tmp]# python test.py
[‘test1’, ‘test2’]
[‘key1’, ‘key2’]
[(‘key1’, ‘value’), (‘key2’, None)]
17 方案的 py2.7 的实践结果,py3 里面的改名叫 configparser 了,换一下应该就可。