Python 读取 TXT 如何按照关键行提取内容

2021-01-06 15:21:46 +08:00
 zhuzhuaini

比如我有一个文本 A.txt;内容为:
[测试]
你好
你很好
[正式]
我好
我很好

我想用 Python 读取这个文本 并且呢 把"[测试]"下面的两行自动放入一个变量当中,把"[正式]"下面的内容放入另外一个变量中,这个"测试"和"正式"可以固定预先写死,想问下有哪些实现方式,谢谢

2876 次点击
所在节点    Python
26 条回复
saulshao
2021-01-06 16:58:01 +08:00
17# 给出了一个完整的解决方案,就照他说的干就行了
zhuzhuaini
2021-01-06 17:05:03 +08:00
@0DBBFF 感谢!我可以琢磨下 应该能看懂
@lpts007 存变量里是为了每个文本框都去显示对应变量里的值....如果文本框填了的话,确实会出 bug,但是是我自己来修改这个内容 所以我避免掉这个问题即可
@leebin 好的 我看下 感谢
@Osk 了解了 现在我通过大家的回复看到了很多的解决方案,我都去试试找一个最方便的
@saulshao 好的 !
@CallMeReznov configparser 我之前试了下 发现他只能读取键值对里的值,无法获取整块内容,而我的格式正好不是键值对的形式 17 楼给了一个方案,我先试下
guhuisec
2021-01-06 17:17:23 +08:00
with open("/Users/yx/PycharmProjects/question/a.txt") as fr:
items=fr.readlines()

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()])
guhuisec
2021-01-06 17:20:22 +08:00
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())

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()])
yaoweilei
2021-01-07 10:09:36 +08:00
[root@localhost tmp]# cat ini.ini
[test1]
key1=value
key2

[test2]
key3=value3
key4
[root@localhost 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"))
[root@localhost tmp]# python test.py
['test1', 'test2']
['key1', 'key2']
[('key1', 'value'), ('key2', None)]

17 楼方案的 py2.7 的实践结果,py3 里面的改名叫 configparser 了,换一下应该就可。
yucongo
2021-01-07 11:45:28 +08:00
pydantic + dotenv

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/742212

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX