python - 将 txt 解析为块
问题描述
我有一个txt文件,其结构如下
start
id=1
date=21.05.2018
summ=500
end
start
id=7
date=23.05.2018
summ=500
owner=guest
end
我需要在字典列表中解析它(str:str(即使它是 int 类型或日期:将其转换为字符串))。即用 将其拆分为块start
end
,然后将其拆分为=
符号。之间的行start
end
数可以不同。D 但a 无法意识到。我试过这样的事情:
d ={}
arr = []
ind = 0
for line in plines:
ind = ind + 1
if 'startpayment' in line:
print('ind = ' + str(ind))
for i in range(ind, len(plines)):
print(i)
key, value = plines[i].strip().split('=')
if type(value) == 'str':
d[key] = str(value)
elif type(value) == 'int':
d[key] = int(value)
arr.append(d)
if 'endpayment' in line:
break
有人可以帮助我吗?谢谢
解决方案
使用正则表达式。
import re
with open(filename, "r") as infile:
data = infile.read()
data = re.findall("(?<=\\bstart\\b).*?(?=\\bend\\b)", data, flags=re.DOTALL) #Find the required data from text
r = []
for i in data:
val = filter(None, i.split("\n"))
d = {}
for j in val:
s = j.split("=") #Split by "=" to form key-value pair
d[s[0]] = s[1]
r.append(d) #Append to list
print(r)
输出:
[{'date': '21.05.2018', 'summ': '500', 'id': '1'}, {'date': '23.05.2018', 'owner': 'guest', 'summ': '500', 'id': '7'}]
推荐阅读
- javascript - 在 Firestore Firebase 中获取自动生成的 ID
- java - 关于排序路径的想法?
- javascript - React - 未捕获的类型错误:无法读取未定义的属性“1”
- javascript - Chartist.js 响应式
- angularjs - 使用 angular-fullstack 生成器实现braintree-angular 支付网关
- python - python中的优化返回大数的猜测值
- python - 有没有办法通过 LDAP 集成来控制对 PyPI 工件的访问
- android - 谁能解释一下这部分代码“((MainActivity)getActivity()).someMethod()”的含义?
- php - 如何在php中比较数组的加法和减法?
- html - Libcurl C++ - 如何发布此特定表单的表单数据?