@BlackJack: Ich habe versucht die listen Inhalt in eine Datei gespeichert:
Code: Alles auswählen
Test, A, B01, 828288, 1, 7, C, 5
Test, A, B01, 828288, 1, 7, T, 6
Test, A, B01, 171878, 3, 7, C, 5
Test, A, B01, 171878, 3, 7, T, 6
Test, A, B01, 871963, 3, 9, A, 5
Test, A, B01, 871963, 3, 9, G, 6
Test, A, B01, 1932523, 1, 10, T, 4
Test, A, B01, 1932523, 1, 10, A, 5
Test, A, B01, 1932523, 1, 10, X, 6
Test, A, B01, 667214, 1, 14, T, 4
Test, A, B01, 667214, 1, 14, G, 5
Test, A, B01, 667214, 1, 14, G, 6
Ich verwende eine "convert" Funktion, welche Datentypen erkennt und diese umwandelt.
Code: Alles auswählen
#!/usr/bin/env python
from __future__ import absolute_import, division, print_function
from itertools import groupby
DATA = [["Test", "A", "B01", 828288, 1, 7, 'C', 5],
["Test", "A", "B01", 828288, 1, 7, 'T', 6],
["Test", "A", "B01", 171878, 3, 7, 'C', 5],
["Test", "A", "B01", 171878, 3, 7, 'T', 6],
["Test", "A", "B01", 871963, 3, 9, 'A', 5],
["Test", "A", "B01", 871963, 3, 9, 'G', 6],
["Test", "A", "B01", 1932523, 1, 10, 'T', 4],
["Test", "A", "B01", 1932523, 1, 10, 'A', 5],
["Test", "A", "B01", 1932523, 1, 10, 'X', 6],
["Test", "A", "B01", 667214, 1, 14, 'T', 4],
["Test", "A", "B01", 667214, 1, 14, 'G', 5],
["Test", "A", "B01", 667214, 1, 14, 'G', 6]]
def iter_something(rows):
key_names = ['type', 'name', 'sub_name', 'pos', 's_type', 'x_type']
chr_key_names = ['letter', 'no']
for keys, group in groupby(rows, lambda row: row[:6]):
result = dict(zip(key_names, keys))
result['chr'] = [dict(zip(chr_key_names, row[6:])) for row in group]
yield result
def convert(val):
constructors = [int, str]
for c in constructors:
try:
return c(val)
except ValueError:
pass
def main():
with open("/home/mic/tmp/test.txt") as f:
for line in f:
try:
data = [convert(part.strip()) for part in line.split(',')]
print(data)
except IndexError:
continue
for object_ in iter_something(data):
print(object_)
if __name__ == '__main__':
main()
Wie könnte man an "iter_something" jede Dateizeile übergeben in den oberen Code?
Gibt es eine bessere Methode wie man Elemente in einer Liste umwandeln könnte, da man in diesem Beispiel weiß welches Element welchen Typ hat?
@Sirius3: Danke, manchmal sieht man den Wald vor lauter Bäumen nicht.