Forum Coders' city Strona Gwna Coders' city
Nasza pasja to programowanie!
 

 PomocPomoc   SzukajSzukaj   UytkownicyUytkownicy   GrupyGrupy  RejestracjaRejestracja 
Archiwum starego forum + teoria    RSS & Panel/SideBar
 ProfilProfil   Zaloguj si, by sprawdzi wiadomociZaloguj si, by sprawdzi wiadomoci   ZalogujZaloguj 

Potrzebuj szybkiej odpowiedzi na moje pytanie... Zasady

Praca na pliku XML



 
Odpowiedz do tematu    Forum Coders' city Strona Gwna -> Python
Zobacz poprzedni temat :: Zobacz nastpny temat  
Autor Wiadomo
Caporeira



Doczy: 26 Lis 2015
Posty: 49

PostWysany: Czw Lut 18, 2016 4:52 pm  OP    Temat postu: Praca na pliku XML Odpowiedz z cytatem Pisownia

Zaczem dziaa w pythonie i jest to mj pierwszy program wic prosz o wyrozumiao.
Jasne / zrozumiaem wskazwki :)

Utknem i potrzebuj waszej pomocy.

Aktualny kod wypluwa mi co takiego (pobiera to z excela):

V004 AS01.01
V008 AS01.01
V009 AS01.01
V015 AS01.01
V016 AS01.01

W tym momencie dobrym sposobem bdzie chyba zapisaniem tego do tabilcy ? - Jak to zapisa do tablicy ?

W kolejny etapie potrzebuje wczyta plik xml. Przeszuka i zamieni stringi.

aduj plik example.xml

Szukam stringu 'element' i zamieniam na 'V004'
Szukam stringu 'adres' i zamieniam na 'AS01.01'
Szukam stringu 'obszar' i zamieniam na 'AS01'
I zapisuje plik jako V004.xml

Nastpnie to samo z tym e bd to dane z drugiej linijki (V008 AS01.01 )
Szukam stringu 'element' i zamieniam na 'V008'
Szukam stringu 'adres' i zamieniam na 'AS01.01'
Szukam stringu 'obszar' i zamieniam na 'AS01'
I zapisuje plik jako V008.xml

itd.

Pomoe mi kto ?

Pracuje na python 3.5

Oto kod:
Kod:
import openpyxl
import xml.etree.ElementTree
from xml.dom import minidom
import xml.etree.ElementTree as ET



wb = openpyxl.load_workbook('example.xlsx')                                 # wczytuje plik do zmiennej
sheet = wb.get_sheet_by_name('Query')                                       # pobieram zakladke i przypisuje do zmiennej

row_count = sheet.max_row                                                   # licze ilosc wiersz

for i in range(3, row_count+1):                                             # ustalam zakres
        if 'Scanner' in sheet.cell(row=i, column=4).value:                  # jesli string w stringu
            #print(i, sheet.cell(row=i, column=1).value + ' ' + sheet.cell(row=i, column=3).value)
            print(sheet.cell(row=i, column=1).value + ' ' + sheet.cell(row=i, column=3).value[3:10])




tree = ET.parse('example.xml')
root = tree.getroot()



PS. Do tego wszystkiego wypluwa mi takie ostrzeenie:

Cytat:
Warning (from warnings module):
File "C:Python35\lib\site-packages\openpyxl\workbook\names\named_range.py", line 125
warnings.warn("Discarded range with reserved name")
UserWarning: Discarded range with reserved name
Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo
hurgadion



Doczy: 06 Kwi 2011
Posty: 853
Skd: Web :)

PostWysany: Pi Lut 19, 2016 2:10 pm      Temat postu: Odpowiedz z cytatem Pisownia

Witam,
to raczej standard, przejrzyj ten link, pozdrawiam.

_________________
miasto nauki praktycznej
Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo Odwied stron autora Numer GG
Caporeira



Doczy: 26 Lis 2015
Posty: 49

PostWysany: Pi Lut 19, 2016 11:21 pm  OP    Temat postu: Odpowiedz z cytatem Pisownia

Zrobiem co takiego:

Kod:
zamiany = {
  'U001':result[0][0],
  'WE01.01':result[0][1]
}

dane = open('example.xml', "r").read()

for zmiana in zamiany:
    dane.replace(zmiana, zamiany[zmiana])

open('wynik.xml', "w").write(dane)



ale kod nie dokonuje adnych zmian w pliku a jedynie robi jego kopi.
Pytanie, czemu to nie zamienia stringw ?
Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo
hurgadion



Doczy: 06 Kwi 2011
Posty: 853
Skd: Web :)

PostWysany: Sob Lut 20, 2016 7:53 am      Temat postu: Odpowiedz z cytatem Pisownia

zerknij teraz tutaj :)

wskazwka na przyszo: nie bj si wujka Google pyta, to cakiem fajny wujek... :)

_________________
miasto nauki praktycznej
Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo Odwied stron autora Numer GG
Caporeira



Doczy: 26 Lis 2015
Posty: 49

PostWysany: Sob Lut 20, 2016 11:58 am  OP    Temat postu: Odpowiedz z cytatem Pisownia

Dzikuje, oczywicie uywam google, ale z racji e jestem pocztkujcy nie znajduje zawsze to czego potrzebuje.
Np szukaem operacji na xml, a wystarczyo operacje na plikach :)

Prbuje na rne sposoby i dalej, dziaa podmiana jednego string, ale jak potrzebuje dwch czy trzech to w w pliku mam podwjn zawarto.

Kod:
zrodlo = open('example.xml').readlines()
cel = open(result[0][0]+'.xml', 'w')
for s in zrodlo:
    cel.write(s.replace('U001', result[0][0]))
    cel.write(s.replace('WE01.01', result[0][1]))
cel.close()


To chyba trzeba najpierw pozamienia a na kocu zapisa plik ?
Dawaem samo s.replace('U001', result[0][0]) oraz cel.replace('U001', result[0][0]) a na kocu cel.write().
Ale nie idzie. Jak to rozwiza ?
Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo
hurgadion



Doczy: 06 Kwi 2011
Posty: 853
Skd: Web :)

PostWysany: Sob Lut 20, 2016 2:20 pm      Temat postu: Odpowiedz z cytatem Pisownia

zamiast tego
Kod:

for s in zrodlo:
    cel.write(s.replace('U001', result[0][0]))
    cel.write(s.replace('WE01.01', result[0][1]))


sprbuj moe tak:
Kod:

for s in zrodlo:
    for key in zamiany.keys():
        s = s.replace(key, zamiany[key])
    cel.write(s)


Powinno pomc, pozdrawiam :)

_________________
miasto nauki praktycznej
Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo Odwied stron autora Numer GG
Caporeira



Doczy: 26 Lis 2015
Posty: 49

PostWysany: Nie Lut 21, 2016 1:37 am  OP    Temat postu: Odpowiedz z cytatem Pisownia

Dziki, zadziaao!
Rozbudowaem to troch i wyglda to nastpujco:

Kod:
for j in range(len(result)):
    zrodlo = open('example.xml').readlines()
    zamiany = {
  'U001':result[j][0],
  'WE01.01':result[j][1]
    }
    cel = open(result[j][0]+'.xml', 'w')
    for s in zrodlo:
        for key in zamiany.keys():
            s = s.replace(key, zamiany[key])
        cel.write(s)
cel.close()


Plik 'zamiany' bd chcia rozbudowa. Std moje pytanie, czy polecenie replace bdzie zawsze realizowao zadanie w tej samej kolejnoci wedug listy 'zamiany' ? Czyli od gry do dou ?

PS. Szukam najlepiej po polski jak doda stringi/tagi do xml-a. Ale nic ciekawego nie znajduj.
Moe lepiej bdzie czyta te tagi/stringi z innego pliku xml, ale tak czy inaczej pniej musz je doda w okrelone miejsce do xml-a.
Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo
hurgadion



Doczy: 06 Kwi 2011
Posty: 853
Skd: Web :)

PostWysany: Nie Lut 21, 2016 11:23 am      Temat postu: Odpowiedz z cytatem Pisownia

Iteracja po sowniku bdzie w takiej kolejnoci w jakiej bdzie tworzona lista kluczy, pogmeraj w dokumentacji. Jeeli chodzi o drugie pytanie, to proponuj poszuka dobrze w sieci, ode mnie to tyle, pozdrawiam.
_________________
miasto nauki praktycznej
Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo Odwied stron autora Numer GG
Wywietl posty z ostatnich:   
Odpowiedz do tematu    Forum Coders' city Strona Gwna -> Python Wszystkie czasy w strefie CET (Europa)

Strona 1 z 1

 
Skocz do:  
Moesz pisa nowe tematy
Moesz odpowiada w tematach
Nie moesz zmienia swoich postw
Nie moesz usuwa swoich postw
Nie moesz gosowa w ankietach
Moesz dodawa zaczniki na tym forum
Moesz pobiera pliki z tego forum




Debug: strone wygenerowano w 0.12307 sekund, zapytan = 11
contact

| Darmowe programy i porady Jelcyna | Tansze zakupy w Helionie | MS Office Blog |