Python Forum

Full Version: writing to file
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Huh newbie to this!
Trying to write to a new text-file, formatted in a specific way:
The first, source, text-file is containing a list of nubmers in columns.

000123456
000123457
000123458
000123459
000123460
000123461
...........

I want to create a new list looking like this:
starts with parenthesis ("first row number" == "next row of number") and.
Like this:
(000123456 == 000123457) and
(000123458 == 000123459) and
(000123460 == 000123461).........

What is the easiest way to solve this? Started like this:

infile = open("regina.txt", "r+")
outfile = open("Regina_ID.txt", "w")
for line in infile:
infile = ( line + " == " )
outfile.write(infile)
outfile.close()

Thanks in advance!
You can do something like this:
lines = infile.readlines() #put all the lines in an array
sizeOfGroups = 2
if len(lines) % sizeOfGroups == 1: #if it's an odd number of elements
    lines.remove(lines[-1]) #Remove the last element - you could always add a new element to the end intead of removing.
groups = [lines[n:n+sizeOfGroups] for n in range(0, len(lines), sizeOfGroups)] #use a list comprehension to split the big list into smaller sub lists with the size of 'sizeOfGroups'
for group in groups: #loop through each esub list
    outfile.write('({0}=={1}) and\n'.format(group[0].replace('\n',''), group[1].replace('\n',''))) #format and write to the outfile
outfile.close()
As it says in the comments of line 4, it removes the last element if the list is an odd number. You can always change it to this, so it adds a filler element:
lines = lines + ['-----']
In my opinion, this doesn't give you a very pretty output because it would be something like this:
Output:
(000123461==-----) and
Note: the list comprehension on line 5 is the same as this:
sub_lists = []
for n in range(0, len(lines), sizeOfGroups): #the extra parameter in range() tells it how much it increases by each time - for this it goes: 2, 4, 6 ....
    sub_lists.append(lines[n:n+sizeOfGroups]) #split the list into groups by taking the element 0-2 (2 not included so technically speaking 0-1) and so on.
(Dec-21-2019, 06:53 PM)DreamingInsanity Wrote: [ -> ]You can do something like this:
lines = infile.readlines() #put all the lines in an array
sizeOfGroups = 2
if len(lines) % sizeOfGroups == 1: #if it's an odd number of elements
    lines.remove(lines[-1]) #Remove the last element - you could always add a new element to the end intead of removing.
groups = [lines[n:n+sizeOfGroups] for n in range(0, len(lines), sizeOfGroups)] #use a list comprehension to split the big list into smaller sub lists with the size of 'sizeOfGroups'
for group in groups: #loop through each esub list
    outfile.write('({0}=={1}) and\n'.format(group[0].replace('\n',''), group[1].replace('\n',''))) #format and write to the outfile
outfile.close()
As it says in the comments of line 4, it removes the last element if the list is an odd number. You can always change it to this, so it adds a filler element:
lines = lines + ['-----']
In my opinion, this doesn't give you a very pretty output because it would be something like this:
Output:
(000123461==-----) and
Note: the list comprehension on line 5 is the same as this:
sub_lists = []
for n in range(0, len(lines), sizeOfGroups): #the extra parameter in range() tells it how much it increases by each time - for this it goes: 2, 4, 6 ....
    sub_lists.append(lines[n:n+sizeOfGroups]) #split the list into groups by taking the element 0-2 (2 not included so technically speaking 0-1) and so on.

DreamingInsanity!
Thanks for your help and input - Merry Christmas!
// J
Use code tag @jenost.
Here one way.
with open('regina.txt') as f,open('regina_id.txt', 'w') as f_out:
    l = [i.strip() for i in f]
    lst = zip(l[::2], l[1::2])
    for numb in lst:
        f_out.write(f'{numb[0]} == {numb[1]}\n')