Suppose I have this textfile A:

League 1:
a = 123456, b = england
a = 234564, b = brazil
a = 939311, b = germany
...
League 2:
a= 213213, b = italy
...
...
League 500:
a = 74778, b = denmark
...

-----------------------------------------------------

Now, I have another textfile B:

League 1:
trash
trash
trash
a = 123456
a = 234567
a = 939311
...
League 2:
trash
trash
...
a = 312311
a = 987324
...
...
League 500:
trash
trash
...
a = 238483
a = 243234
...

NOW, can someone please help me to convert a list of "a =" in each League from textfile B into a list of corresponding "b ="? Any ideas/ suggestions? Thanks in advance!

Thanks Tony. I have tried to use a dictionary but my code, which I include below, does not run at all. I have waited for a day but nothing appears, not even an error message. Weird! Please help me, anyone!!

f = open('textfileA')

a = {}
l = 0

for line in f:
    line = line.strip()
    if "League" in line:
        a[l] = {}
        l += 1

    text = open('textfileB')
    for line in text:
        if line.lower().startswith(('NEXT LEAGUE', 'a = ')):

        ################
        #I forgot to include 'NEXT LEAGUE' right before the list of "a =" in textfileB
        ################

            my_a = line.split(',')[0]
            if my_a not in a[l-1]:
                a[l-1][my_a] = 1
            else:
                a[l-1][my_a] += 1

for i in a.keys():
    for val in a[i].keys():
        print val

You could first work with file A alone and create a dictionary having the structure

{
    1: {
        '123456':'england',
        '234564': 'brazil',
        '939311': 'germany',
    },
    2: {
        '213213':'italy',
    },

    500: {
        '74778': 'denmark',
    },
}

then work with file B and this dictionary.

Edited 4 Years Ago by Gribouillis

I have looked all over the net and tried but I'm still not entirely sure how to use a dictionary compiled from 1 file to convert between variables in another file. Can you please give me an example of how to do it??

I don't give you the code, but an algorithm

the_dict = create a dictionary from file A
open an output file C to write the transformed file
open file B for reading
for each line in file B:
    if the line has the form 'League <number>:':
        current_league = extract the number from the line
        write the line to file C
    elif the line has the form 'a = <something>':
        extract the something from the line
        value = the_dict[current_league][something]
        write a line 'b = <value>' in file C
    else:
        write the line to file C unchanged
close file B
close file C

This code will fail with a key error if file B contains a value for a = ... which is not defined in file A.

Edited 4 Years Ago by Gribouillis

Can you please check my code below? Unfortunately, it doesn't run due to the error message "KeyError: 0". Thanks a bunch!

f = open('textfile A') 
a = {}
current_league = 0

fout = open ('textfile C', 'w')

text = open ('textfile B', 'r')
for line in text:
    line = line.strip()
    if "League <number>:" in line:
        a[current_league] = {}
        current_league = number
        print ('<number>, fout')
    elif line.lower().startswith(('NEXT LEAGUE', 'a = ')):

    ####I forgot to include 'NEXT LEAGUE' right before
    ####the list of "a =" in textfileB

        my_a = line.split(',')[0]
        value = a[current_league][my_a]
        print ('b = <value>, fout')
    else:
        pass

text.close()
fout.close()

Tony, why do you say this is the verbatim of the pseudocode? It apparently is different from Gribouillis's algorithm and it fits the Python standard and makes sense to me. I'm sure the problem here is that I'm missing 1 or 2 lines or some syntax error that I'm not aware of. I have no real formal training in Python; I'm exploring it out of curiosity in my summer freetime. I'm sure the code is a piece of cake for many of you out there. I hope someone can help me point out specifically what is wrong with my code.

The first wrong thing is line 2 because you must write the code to extract a dictionary like this one from file A instead of an empty dictionary. This first step is required, so concentrate on it. The solution is not somewhere on the net. As you are a python beginner, start with simple tasks. Extracting data from a single file is a way to manipulate and learn the language basics. By the way, if you want a nice dictionary display, use module pprint

from pprint import pprint    
pprint(the_dict)

Edited 4 Years Ago by Gribouillis

This article has been dead for over six months. Start a new discussion instead.