Вы можете разбить свой 1-мерный список на списки списков - каждый раз, когда '\n'
происходит, когда вы начинаете новый внутренний список - затем сортируйте внутренние и рекомбинируйте их:
a = ['ot=apple', 'zz=top', 'par=four', 'xyz_test=wff', 'sesh=232d23f23f33ff',
'\n', 'xt=cal', 'poss=33', '\n', 'val=fifty', 'dvx=32f23f2',
'\n','dsfad=www', 'orr=dsav']
b = '\n'
# partition your data into sublists
stacked = [[]]
for k in a:
if k == b:
stacked.append([])
else:
stacked[-1].append(k)
# remove empty list at end if present
if not stacked[-1]:
stacked = stacked[:-1]
# sort each inner list
for sublist in stacked:
sublist.sort()
# unstack again
retval = []
for k in stacked:
retval.append(b) # add a \n
retval.extend(k) # extend with the sublist
# remove the first \n
retval = retval[1:]
print a
print stacked
print retval
Вывод:
# a
['ot=apple', 'zz=top', 'par=four', 'xyz_test=wff', 'sesh=232d23f23f33ff', '\n', 'xt=cal',
'poss=33', '\n', 'val=fifty', 'dvx=32f23f2', '\n', 'dsfad=www', 'orr=dsav']
# stacked
[['ot=apple', 'par=four', 'sesh=232d23f23f33ff', 'xyz_test=wff', 'zz=top'], ['poss=33', 'xt=cal'],
['dvx=32f23f2', 'val=fifty'], ['dsfad=www', 'orr=dsav']]
# retval
['ot=apple', 'par=four', 'sesh=232d23f23f33ff', 'xyz_test=wff', 'zz=top', '\n',
'poss=33', 'xt=cal', '\n', 'dvx=32f23f2', 'val=fifty', '\n', 'dsfad=www', 'orr=dsav']