Parsing Text File And Segregating The Data In A Dictionary
I have a kind of complex problem here in parsing a text file. What I need: Read through a text file. If a line matches a specific condition, create a key named (condition 1) Cop
Solution 1:
Try this:
In [46]: from collections import defaultdict
In [47]: d = defaultdict(list)
In [48]: cond = None
...: for i in mystring.splitlines():
...: if'condition'in i.split()[0]:
...: cond = i.split()[0][:-1] ...:
...: elif cond:
...: d[cond].append(i)
In [49]: d
Out[49]:
defaultdict(list,
{'condition1': ['K2 letters characters jgjgjg',
'J1 alphas numbers fgdhdhd',
'L1 letters numbers haksjshs'],
'condition2': ['J1 alphas numbers fgdhdhd',
'D1 letters numbers haksjshs',
'J1 alphas numbers fgdhdhd',
'D1 letters numbers haksjshs']})
Solution 2:
With re.search
function and collection.defaultdict
object:
import re
import collections
withopen('input.txt', 'rt') as f:
pat = re.compile(r'^condition\d+')
d = collections.defaultdict(list)
curr_key = Nonefor line in f:
m = pat.search(line)
if m:
curr_key = m.group()
continueif curr_key:
d[curr_key].append(line.strip())
print(dict(d))
The output:
{'condition1': ['K2 letters characters jgjgjg', 'J1 alphas numbers fgdhdhd', 'L1 letters numbers haksjshs'], 'condition2': ['J1 alphas numbers fgdhdhd', 'D1 letters numbers haksjshs', 'J1 alphas numbers fgdhdhd', 'D1 letters numbers haksjshs']}
Post a Comment for "Parsing Text File And Segregating The Data In A Dictionary"