mardi 14 avril 2020

Python making matching pairs

I've got the .txt file like this within:

Crista

Jame

7,3

2,0

Wiki

Rok

4,1

6,2

3,2

6,8

Pope

Lokk

5,2

0,1

3,1

Sam

Antony

4,3

9,1

My code to find all names and append them to the names[] list, and to find all digits and append them to the digits[] list(if there are more than two lines with digits in a row I didn't need them in the list before):

import re
f=open('mine.txt')
names=[]
digits=[]
count=0
for line in f:
        line = line.rstrip()
        if re.search('^[a-zA-Z]', line):
                name=line
                names.append(name)
        if re.findall('^\d{1}:\d{1}', line):
            if count < 2 :
                digit=line
                digits.append(digit)
            count += 1
        elif line != "" :
            count = 0

Then I made pairs for matching names and digits:

  my_pairs_dig=list()
    while(digits):
        a = digits.pop(0); b = digits.pop(0)
        my_pairs_dig.append((a,b))
    my_pairs_dig

    my_pairs_names = list()
    while(names):
        a = names.pop(0); b = names.pop(0)
        my_pairs_names.append((a,b))
    my_pairs_names
    outp=list(zip(my_pairs_names,my_pairs_dig))

And got this output:

[(('Crista', 'Jame'), ('7,3', '2,0')), (('Wiki', 'Rok'), ('4,1', '6,2')), (('Pope', 'Lokk'), ('5,2', '0,1')), (('Sam', 'Antony'),('4,3', '9,1'))]

But plans were changed and now my desired outout is:

[(('Crista', 'Jame'), ('7,3', '2,0')), (('Wiki', 'Rok'), ('4,1', '6,2'), ('3,2', '6,8')), (('Pope', 'Lokk'), ('5,2', '0,1'), ('3,1')), (('Sam', 'Antony'),('4,3', '9,1'))]

How can I rewrite my code to got the desired outoput?

Aucun commentaire:

Enregistrer un commentaire