Im sure this is a simple readlines solution. I have spent some time trying to solve it without success.
I have a block of text that reads:
"This is the text 1"
0.0 2.0 2.0 2.0
0.0 0.0 4.0 0.0
0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0
"This is the text 2"
0.0 5.0 3.0 5.0
0.0 0.0 6.0 0.0
0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0
and I am struggling to change it to:
"This is the text 1"
0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0
0.0 0.0 4.0 0.0
0.0 2.0 2.0 2.0
"This is the text 2"
0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0
0.0 0.0 6.0 0.0
0.0 5.0 3.0 5.0
Any help greatly appreciated. Thanks
Code:
f = open("file.txt", "rb")
s = f.readlines()
f.close()
f = open("newtext.txt", "wb")
f.writelines(s[::-1])
f.close()
Returns the whole txt file inverted.
This is working under the assumption that the number of rows between the text is always consistent.
# Open file, split on newlines into a list
with open('file.txt') as f:
data = f.read().splitlines()
# Break list into multiple lists 7 items long
# this covers the text and the 6 sets of numbers that follow
newlist = [data[i:i + 7] for i in range(0, len(data), 7)]
output = []
# Append the text, then iterate backwards across each list, stopping short of the text
for item in newlist:
output.append(item[0])
for x in item[:0:-1]:
output.append(x)
# output to text file, adding a newline character at the end of each row
with open('newtext.txt', 'w') as f:
for item in output:
f.write('{}\n'.format(item))