Mam taki problem. Pracuje z plikami tekstowymi i zastanawiam się jak zrobić pewną sprawę. Mam numerację atomów w jednym pliku i numerację atomów w drugim. Jednak one się różnią - tzn. np. atomowi C1 w pierwszym pliku odpowiada numer 1, a w drugim numer 9. Cztery kolejne atomy w danej linijce pliku mówią nam o kącie torsyjnym (nieważne taka dodatkowa informacja, po prostu one są uorganizowane w cztery atomy w każdej linijce). Oto co chcę zrobić:
Muszę zamienić numerowanie w pierwszym pliku na numerowanie w drugim, czyli np. mam taki plik tekstowy, gdzie w linijce mam:
48 43 38 42
wiem, że w tej drugiej numeracji:
38 odpowiada 48,
42 odpowiada 56,
43 odpowiada 50,
48 odpowiada 51,
więc po zadziałaniu skryptu powinienem mieć taką linijkę:
51 50 48 56
Jak to zrobić? Postanowiłem, że użyję słownika. Potem spróbuję jakoś to zrobić pętlą
torsion = { 1 : 9,
2 : 8,
3 : 6,
4 : 7,
....
....
148 : 20,
149 : 19,
150 : 22, }
myfile = "torsyjne"
with open(myfile, "r") as kt:
lines = kt.read().splitlines()
with open(myfile, "w") as fp:
for line in lines:
print(i tu nie wiem jak to zrobić, chciałem zrobić coś takiego, żeby value zastępowało key, jedna numeracja z drugiej)```
Dodam jeszcze, że mogę to zrobić w awk poprzez gsub typu (awk '{ gsub(/1/, "9"); print }' file xxx), ale musiałbym 150 linijek kodu robić i zastanawiałem się czy z pythonem nie pójdzie mi szybciej)