I have the following file:
1 real madrid,barcelona,chelsea,arsenal,cska
2 chelsea,arsenal,milan,napoli,juventus
5 bayern,dortmund,celtic,napoli
7 cska,psg,arsenal,atalanta
9 atletic bilbao,las palmas,milan,barcelona
and I want to produce a new file with this output (where I had the nodes, now I have every team and in the second column I have the nodes that has this team as attribute):
real madrid 1
barcelona 1,9
chelsea 1,2
arsenal 1,2,7
cska 1,7
milan 2,9
etc...
First of all i opened the file and I saved each column to a list:
file1 = open("myfile.txt","r")
lines1 = file1.readlines()
nodes1 = []
attrs1 = []
for x in lines1:
x = x.strip()
x = x.split('\t')
nodes1.append(x[0])
attrs1.append(x[1].split(','))
but now how can I check the attrs and nodes to produce the output file?
Better, create a dictionary when reading the file:
line_map = {}
for x in lines1:
(row_no, teams) = x.strip().split("\t")
for i in teams.split(","):
if not i in line_map:
line_map[i] = set()
line_map[i].add(row_no)
Now line_map contains a mapping of the team name to a list of lines it is contained on. You can easily print that:
for (k, v) in line_map.items():
print("%s: %s" % (k, ",".join(v)))
if I am not much mistaken...
Edit: append should have been add.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With