Wpis z mikrobloga

#python
Dzień dobry !
Mam pewien plik z całym syfem html itp. Udało mi się uzyskać już postać prawie idealną:
x1
;x2
;x3
;x4
;NEW_LINE
y1
;y2
;y3
;y4
;NEWLINE
x-ów i y-ów jest po 65szt, linii ponad 4000
Ostatecznie chciałbym żeby plik przypominał csv, czyli:
x1;x2;x3;x4....
y1;y2;y3;y4...

Pomoże ktoś ? Szukałem na necie podobnych rozwiązań, jednak jakoś nic mi nie działa tak jak powinno.
Ps. Tak, uczę się :P
  • 15
  • Odpowiedz
with open('input', 'rb') as input, open('output', 'wb') as output:
....buffer = []
....for line in input:
........if line == ';NEWLINE':
............output.write(''.join(buffer))
............buffer = []
........else:
............buffer.append(line)
  • Odpowiedz
@czaq:
Teoretycznie poprawne wykonanie to to wczytanie pliku jako filefoo z .readlines() i później:
for line in file
foo:
_if linestartswith(';')
__filefoo2.append(line)
_elif fine=='/n':
__pass
else:
__filefoo2.append(line + '/n')

W sumie to chyba na całym pliku możesz wykonać:
replace('/n;', ';').replace('/n/n', '/n') ;)
  • Odpowiedz
@czaq:
1.najpierw przygotuj sobie stringa a potem go zapisz do pliku ;)
2. pliku nie musisz zamykać, konstrukcja 'with' już CI to załatwia
3. nie nazywaj zmiennej 'file'
ogólnie mi się wydaje że lepiej by było wyciągnąć to co chcesz z pliku, a nie oryginalny string edytować tym replacem... zobacz sobie regexpy (biblioteka re) i wyciagnij co tam chcesz z tych "<td class". nie jestem pewny czy jesteś w stanie przewidzieć
  • Odpowiedz
Dobrze by było zobaczyc skąd to wyciagasz. Może scraper, albo pandas byłoby o wiele lepsza metoda na wyciągnięcie danych z HTMLa.
I pytanie czytasz jakiegoś pikla, że otwierasz pliki binarne, czy tekst? Bo jak tekst, to wywal b z funkcji open.
To na szybko.
  • Odpowiedz
@biwalencik: link
Generalnie to jest plik *.xls, ale po otworzeniu jest komunikat że jest to inny format niż rozszerzenie pliku. Po otworzeniu dane widać ładnie. Czyli xml
  • Odpowiedz
@czaq:

from lxml import etree
doc = etree.parse('file.xml')

root = doc.getroot()
root.tag # wyswietli glowny tag xmla

# szukasz tagow na piechotke
children = root.getchildren()

# mozesz je sobie wypisac
for child in children:
_print child.text # albo child.tag, jelsi zagniezdzenie idzie dalej.

x = []
#jelsi znasz nazwe tagu zawierajacego dane
for elem in root.getiterator('ix'):
x.append[elem.text]


# mozesz wypisac wszystkie tagi z pliku i sprawdzic gdzies a dane
for
  • Odpowiedz