Advertisement
Guest User

Untitled

a guest
Feb 18th, 2020
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.03 KB | None | 0 0
  1. import re # biblioteka do wyszukiwania/zastępowania ciągów znaków
  2.  
  3. def zwroc_wartosc_zmieniona_o_procent(wartosc_wejsciowa, procent):
  4.     """
  5.    ta funkcja zwraca x% wartosci
  6.    (podaj -0.05 aby zwiekszyc o 5% albo 0.29 aby zwiekszyc o 29 %)
  7.  
  8.    """
  9.     wartosc_wyjsciowa = float(wartosc_wejsciowa) * abs(float(procent))
  10.  
  11.     print(wartosc_wejsciowa, procent, int(wartosc_wyjsciowa))
  12.     return int(wartosc_wyjsciowa)
  13.  
  14. def zwroc_nta_wartosc(string,n):
  15.     """
  16.    ta funkcja zwraca nte wystąpienie ciągu cyfr
  17.    """
  18.     if len(re.findall(r"\d+",string))>0:
  19.         return  int(re.findall(r"\d+",string)[n])
  20.  
  21. def zapisz_do_pliku(nazwa_pliku, zawartosc):
  22.     """
  23.    ta funkcja zapisuje podaną zawartość do danego nazwa_pliku
  24.    należy podać nazwę pliku wraz z rozszerzeniem
  25.    """
  26.     with open (nazwa_pliku,"w") as f:
  27.         f.write(zawartosc)
  28.  
  29. def zastap_wartosci(dokument_wejsciowy, dokument_wyjsciowy, znacznik, procent):
  30.     """
  31.    ta funkcja ładuje dokument wejściowy, przechodzi po każdej linijce i zamienia
  32.    każdą wartość oznaczoną znacznikiem na x% tej wartości. czyli np. 0.50 z 220 = 110
  33.    na koncu zapisuje do wskazanego pliku wyjsciowego
  34.    """
  35.     nowa_zawartosc = ""
  36.     with open(dokument_wejsciowy, "r") as dokument:
  37.         for linijka in dokument:
  38.             if len(re.findall("<%s>\d+</%s>" % (znacznik, znacznik), linijka)) >= 1:
  39.                 #nowa_zawartosc += re.sub("<%s>\d+</%s>" % (znacznik, znacznik), r'<%s>%s</%s>')
  40.                 pattern = r"<%s>\d+</%s>" % (znacznik, znacznik)
  41.                 repl = r'<%s>%s</%s>' % (znacznik,zwroc_wartosc_zmieniona_o_procent(zwroc_nta_wartosc(linijka,1), procent), znacznik)
  42.                 nowa_zawartosc += re.sub(pattern, repl, linijka, flags = re.M)
  43.             else:
  44.                 nowa_zawartosc += linijka
  45.  
  46.     zapisz_do_pliku(dokument_wyjsciowy, nowa_zawartosc)
  47.  
  48.  
  49.  
  50. if __name__ == "__main__":
  51.     zastap_wartosci(dokument_wejsciowy="input.tcx", dokument_wyjsciowy="output.tcx", znacznik="ns3:Watts", procent = 1.20 )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement