Parsowanie według określonego schematu.

Parsowanie według określonego schematu.
J0
  • Rejestracja: dni
  • Ostatnio: dni
0

Cześć.

Mam następujący problem:
Chciałbym umieścić poniższe wartości wycięte z kodu w tabeli.

Językiem programowania, który mnie interesuje jest C++ (projekt w Qt), ewentualnie jakiś język skryptowy, np. Python.
Dopuszczam używanie bibliotek i myślałem tutaj np. o bibliotece Boost, jednak nie potrafię jej użyć w moim przypadku.

Przykładowy kod:

Kopiuj
<plik>
<t typ="modul" WARTOSC="7" DRUGA_WARTOSC="657" COS_INNEGO="121" JESZCZE_COS_INNEGO="9" />
<t typ="ultra" WARTOSC="5" DRUGA_WARTOSC="1" COS_INNEGO="4" JESZCZE_COS_INNEGO="5" />
<t typ="quad" WARTOSC="9" DRUGA_WARTOSC="23" COS_INNEGO="546" JESZCZE_COS_INNEGO="6" />
</plik>

Proszę o pomocne podpowiedzi.
Z góry dziękuję.

dodanie znacznika <code class="xml"> - furious programming

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
0

No w pythonie to będzie jedna linijka kodu, ale napisz dokładnie CO chcesz z tego wyciągnąć i w jakiej postaci chcesz to mieć. Bo

Chciałbym umieścić poniższe wartości wycięte z kodu w tabeli.

niewiele mi mówi... W tabeli? W tablicy? Jednowymiarowej? Wielowymiarowej? W mapie? Z kluczami? Same wartości? Same liczby z tego kodu?

J0
  • Rejestracja: dni
  • Ostatnio: dni
0

W tabeli, będzie do tego interfejs graficzny.
Mniej więcej tak:

Kopiuj
             WARTOSC      DRUGA_WARTOSC      COS_INNEGO        JESZCZE_COS_INNEGO
modul           7 ...
ultra
quad

Wartości te będą w przyszłości porównywane i zmieniane.

KA
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 1683
Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
0

No możesz się tu bawić w parsowanie xmla, ale jeśli ten plik wejściowy wygląda dokładnie tak jak pokazałeś to wystarczy ci prosty regexp.

Kopiuj
import re


def main():
    source="""
    <plik>
<t typ="modul" WARTOSC="7" DRUGA_WARTOSC="657" COS_INNEGO="121" JESZCZE_COS_INNEGO="9" />
<t typ="ultra" WARTOSC="5" DRUGA_WARTOSC="1" COS_INNEGO="4" JESZCZE_COS_INNEGO="5" />
<t typ="quad" WARTOSC="9" DRUGA_WARTOSC="23" COS_INNEGO="546" JESZCZE_COS_INNEGO="6" />
</plik>
    """
    pattern = re.compile("\s*(\w*?)=\"(.*?)\"\s*")
    table = {}
    for line in source.split("\n"):
        values = {key: value for key, value in pattern.findall(line)}
        if values:
            table[values["typ"]] = values
    print(table)

main()
J0
  • Rejestracja: dni
  • Ostatnio: dni
0

Dziękuję, spróbuję jednak to zrobić w C++. Poczytam trochę i w razie problemów się odezwę.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.