如何从python中的txt文件中轻松使用块?
我想将其转换为XML格式。
我已经写过的内容(它没有显示第一个TY行...):
#!/usr/bin/python
import re
sample = """
TY - RPRT2
A1 - Peter
T1 - Something
ER -
TY - RPRT3
A1 - Peter2
T1 - Something else
ER -
TY - RPRT4
A1 - Peter3
T1 - Similar
ER -
"""
def blocks2(text):
"""Only non-comment blocks *between* comments"""
buff = []
for line in text.split('\n'):
if line.startswith('TY -'):
if buff:
yield "\n".join(buff)
buff = []
else:
buff.append(line)
if buff:
yield "\n".join(buff)
for block in blocks2(sample):
print "Block:\n%s" % (block)
答案 0 :(得分:0)
print sample.split("\n\n")
我认为会有用......
或者
filter(str.strip,map(lambda x:x.rsplit("TY -",1)[-1],sample.split("ER -")))
答案 1 :(得分:0)
我假设你想要按照以下要求处理每个块的txt文件块:
TI -
ER -
A1 -
或T1 -
您可以使用条件变量来构造dict。假设fd是文件对象或行列表:
inbloc = False
for line in fd:
if inbloc:
if line.startswith('A1 -'):
if 'A1' in bloc:
inbloc = False
else:
bloc['A1'] = line[5:].strip()
elif line.startswith('T1 -'):
if 'T1' in bloc:
inbloc = False
else:
bloc['T1'] = line[5:].strip()
elif line.strip() == 'ER -':
# process bloc
print (bloc)
else:
inbloc = False
elif line.startswith('TY -'):
bloc = { 'TY' : line[5:].strip() }
以sample
字符串作为输入,这会给出:
{'A1': 'Peter', 'T1': 'Something', 'TY': 'RPRT2'}
{'A1': 'Peter2', 'T1': 'Something else', 'TY': 'RPRT3'}
{'A1': 'Peter3', 'T1': 'Similar', 'TY': 'RPRT4'}