levil
pytanie z #python #programowanie

def svaeATOM(self):
with open("new_"+self.file_name,'w') as new_file:
with open(self.file_name) as old_file:
for line in old_file:
if(line[:6].strip() != "ATOM"):
new_file.write(line)
else:
for atom in self.ATOM:
new_file.write(str(atom))

mam coś takiego, jak przy zapisie pozbyć się [ ] oraz przecinków ?
1
  • Najlepsze
  • Wszystkie komentarze
venomik
@levil: Wrzuć to na pastebin, bo ciężko sie czyta.
Skąd w ogóle masz []? Zapisujesz pusty zbiór, tak? Jeśli tak to wystarczy choćby dać if foo wcześniej.
bool( [] ) to false, więc nie doda pustego zbioru.
0
zranoI
zranoI
@levil: jeśli atom to lista, to powinieneś użyć joina i takiego stringa zapisać (nie napisałeś, przy zapisie czego pojawia się [] i przecinki).
0
levil
@venomik: nie o to mi chodzi. wpisuje mi w plik ['siema', 'jestem', 'zenon'] i wlaśnie chodzi mi o zwykły zapis do pliku: siema jestem zenon ( ͡° ͜ʖ ͡°)
0
zranoI
zranoI
@levil: ' '.join(list_var)
0
venomik
@levil:
Jeśli chcesz połączyć pojedyncze wyrazy z listy spacją wystarczy:
' '.join(['siema', 'jestem', 'zenon']) - ale nie wiem wciąż o co chodzi z przecinkami.
Daj fragment pliku wejściowego, odpowiadający mu fragment pliku wyjściowego oraz jak to powinno wyglądać. Bo póki co nie upraszczasz.
0
levil
@venomik: @zranoI: tak wyglada linijka z plik ladowanego:

ATOM 401 CA LEU A 52 -28.957 -1.640 -0.779 1.00 7.23 C
i jest także przechowywany ze spacjami czy tabulatorami, i chce żeby tak też wyglądał na wyjściu

tutaj pliczek: http://www.rcsb.org/pdb/explore.do?structureId=3AUG
PS to jest mój 1 program w życiu z pytona, proszę o wyrozumiałość
0
venomik
@levil:
Plik otwieraj z readlines()
for line in file:
----if line.strip().startwith('"ATOM"):
--------do sth
----else:
--------new_file.write(line)
0
levil
@venomik:no ok, ale co z zapisem, żeby wyglądał tak samo ? dodam, że formatowanie tj spacje/tabualtory są przechowywane.

jak mieć dostęp w for atom in self.ATOM do następnego elementu ? chodzi mi o to żeby w i mieć dostęp do i+1
0
venomik
@levil:
Naprawdę musisz się podszkolić w zadawaniu pytań. Do jakiego następnego elementu? I czym jest self.ATOM?
Jestem tu parę minut i wciąż nic nie wiem ;)
0
levil
@venomik: ATOM to lista, która zawiera listę elementów tej linijki co wstawiłem wyżej. Musze porównać czy 2 element linijki różni się od 2 elementu następnej linijki
czyli coś w tym stylu tab[i]==tab[i+1]+1
0
levil
@venomik: Dobra poradziłem sobie już z zapisem ( ͡° ͜ʖ ͡°), teraz tylko to porównanie
0
venomik
for n in range(len(oldfile)):
----if old
file[n] == old_file[n+1]:
tak możesz porównać dwie kolejne linie z pliku. Jak to przerobić na porównanie elementów linii - poradzisz sobie ;)
0
levil
@venomik: Właśnie wykminiłem coś podobnego ( ͡° ͜ʖ ͡°)
0