🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.programming
17 messages
17 total messages Started by fir Fri, 10 Apr 2020 10:59
elementarne pytania z pythona
#216856
Author: fir
Date: Fri, 10 Apr 2020 10:59
13 lines
1862 bytes
ostatnio troche odpoczalem i mysle sobie by cos postudiowac moze rootkity moze opencl..ale stanelo jadnak na podstawah pythona ;C

morugam bo jest to troche lamerskie ale z drugiej strony potrzebowalem napisac bota na nasz ircowy kanal

nie znam jednak zupelnych podstaw na dwutygodniowe lektury podrecznikow troche szkoda mi czasu i moze tu bedzie szybciej

mam test typu

msg = "cytuj pnnn 1232"

i potrzebuje dobrac sie do tej trzeciej liczby i pobrac jej wartosc, pod warunkiem ze pocztek stringa bedzie wlasnie "cytuj pnnn" z kolei jesli tam bedzie nic albo nie liczna tez chcialbym miec to zdetektowane

jaki to kod? tnx
Re: elementarne pytania z pythona
#216861
Author: Antoni
Date: Fri, 10 Apr 2020 14:56
18 lines
1732 bytes
W dniu 10.04.2020 o 12:59, fir pisze:
> ostatnio troche odpoczalem i mysle sobie by cos postudiowac moze rootkity moze opencl..ale stanelo jadnak na podstawah pythona ;C
> 
> morugam bo jest to troche lamerskie ale z drugiej strony potrzebowalem napisac bota na nasz ircowy kanal
> 
> nie znam jednak zupelnych podstaw na dwutygodniowe lektury podrecznikow troche szkoda mi czasu i moze tu bedzie szybciej
> 
> mam test typu
> 
> msg = "cytuj pnnn 1232"
> 
> i potrzebuje dobrac sie do tej trzeciej liczby i pobrac jej wartosc, pod warunkiem ze pocztek stringa bedzie wlasnie "cytuj pnnn" z kolei jesli tam bedzie nic albo nie liczna tez chcialbym miec to zdetektowane
> 
> jaki to kod? tnx
> 

W obiektowych językach np. Ruby
  msg.split
Re: elementarne pytania z pythona
#216862
Author: fir
Date: Fri, 10 Apr 2020 16:07
23 lines
2279 bytes
W dniu piątek, 10 kwietnia 2020 16:56:08 UTC+2 użytkownik Antoni napisał:
> W dniu 10.04.2020 o 12:59, fir pisze:
> > ostatnio troche odpoczalem i mysle sobie by cos postudiowac moze rootkity moze opencl..ale stanelo jadnak na podstawah pythona ;C
> > 
> > morugam bo jest to troche lamerskie ale z drugiej strony potrzebowalem napisac bota na nasz ircowy kanal
> > 
> > nie znam jednak zupelnych podstaw na dwutygodniowe lektury podrecznikow troche szkoda mi czasu i moze tu bedzie szybciej
> > 
> > mam test typu
> > 
> > msg = "cytuj pnnn 1232"
> > 
> > i potrzebuje dobrac sie do tej trzeciej liczby i pobrac jej wartosc, pod warunkiem ze pocztek stringa bedzie wlasnie "cytuj pnnn" z kolei jesli tam bedzie nic albo nie liczna tez chcialbym miec to zdetektowane
> > 
> > jaki to kod? tnx
> > 
> 
> W obiektowych językach np. Ruby
>   msg.split

ale jak dokladnie?

python mozna pochwalic za wybitnie latwa obsluge tych roznych uslug sieciowych, troche wrecz zaskakujace jak to jest latwe
Re: elementarne pytania z pythona
#216863
Author: Piotr Chamera
Date: Fri, 10 Apr 2020 17:33
36 lines
2296 bytes
W dniu 2020-04-10 o 12:59, fir pisze:
> ostatnio troche odpoczalem i mysle sobie by cos postudiowac moze rootkity moze opencl..ale stanelo jadnak na podstawah pythona ;C
> 
> morugam bo jest to troche lamerskie ale z drugiej strony potrzebowalem napisac bota na nasz ircowy kanal
> 
> nie znam jednak zupelnych podstaw na dwutygodniowe lektury podrecznikow troche szkoda mi czasu i moze tu bedzie szybciej
> 
> mam test typu
> 
> msg = "cytuj pnnn 1232"
> 
> i potrzebuje dobrac sie do tej trzeciej liczby i pobrac jej wartosc, pod warunkiem ze pocztek stringa bedzie wlasnie "cytuj pnnn" z kolei jesli tam bedzie nic albo nie liczna tez chcialbym miec to zdetektowane
> 
> jaki to kod? tnx

Można użyć wyrażeń, regularnych (pisałem w pythonie 2.7, w 3.x powinno 
być podobnie)

import re
m = re.match(u"(cytuj pnnn )(\d+)", msg)

jeśli nie dopasuje do wzorca m będzie None
jeśli dopasuje, to za pomocą group() można pobrać poszczególne części 
dopasowania

 >>> m.group(0)
u'cytuj pnnn 1234'

 >>> m.group(1)
u'cytuj pnnn '

 >>> m.group(2)
u'1234'

 >>> int(m.group(2))
1234
Re: elementarne pytania z pythona
#216864
Author: fir
Date: Fri, 10 Apr 2020 18:35
39 lines
2688 bytes
W dniu piątek, 10 kwietnia 2020 19:33:33 UTC+2 użytkownik Piotr Chamera napisał:
> W dniu 2020-04-10 o 12:59, fir pisze:
> > ostatnio troche odpoczalem i mysle sobie by cos postudiowac moze rootkity moze opencl..ale stanelo jadnak na podstawah pythona ;C
> > 
> > morugam bo jest to troche lamerskie ale z drugiej strony potrzebowalem napisac bota na nasz ircowy kanal
> > 
> > nie znam jednak zupelnych podstaw na dwutygodniowe lektury podrecznikow troche szkoda mi czasu i moze tu bedzie szybciej
> > 
> > mam test typu
> > 
> > msg = "cytuj pnnn 1232"
> > 
> > i potrzebuje dobrac sie do tej trzeciej liczby i pobrac jej wartosc, pod warunkiem ze pocztek stringa bedzie wlasnie "cytuj pnnn" z kolei jesli tam bedzie nic albo nie liczna tez chcialbym miec to zdetektowane
> > 
> > jaki to kod? tnx
> 
> Można użyć wyrażeń, regularnych (pisałem w pythonie 2.7, w 3.x powinno 
> być podobnie)
> 
> import re
> m = re.match(u"(cytuj pnnn )(\d+)", msg)
> 
> jeśli nie dopasuje do wzorca m będzie None
> jeśli dopasuje, to za pomocą group() można pobrać poszczególne części 
> dopasowania
> 
>  >>> m.group(0)
> u'cytuj pnnn 1234'
> 
>  >>> m.group(1)
> u'cytuj pnnn '
> 
>  >>> m.group(2)
> u'1234'
> 
>  >>> int(m.group(2))
> 1234

ok tnx zobacze troche pozniej, tez python 2.7
Re: elementarne pytania z pythona
#216857
Author: godek.maciek
Date: Fri, 10 Apr 2020 18:47
41 lines
2663 bytes
W dniu piątek, 10 kwietnia 2020 12:59:03 UTC+2 użytkownik fir napisał:
> ostatnio troche odpoczalem i mysle sobie by cos postudiowac moze rootkity moze opencl..ale stanelo jadnak na podstawah pythona ;C
> 
> morugam bo jest to troche lamerskie ale z drugiej strony potrzebowalem napisac bota na nasz ircowy kanal
> 
> nie znam jednak zupelnych podstaw na dwutygodniowe lektury podrecznikow troche szkoda mi czasu i moze tu bedzie szybciej
> 
> mam test typu
> 
> msg = "cytuj pnnn 1232"
> 
> i potrzebuje dobrac sie do tej trzeciej liczby i pobrac jej wartosc, pod warunkiem ze pocztek stringa bedzie wlasnie "cytuj pnnn" z kolei jesli tam bedzie nic albo nie liczna tez chcialbym miec to zdetektowane
> 
> jaki to kod? tnx

to masz tak: jak napiszesz

msg.split()

to dostaniesz listę trzech stringów:

['cytuj', 'pnnn', '1332']

i teraz możesz sobie napisać np. takie coś:

def dziwny_warunek_firra(msg):
    if not isinstance(msg, str):
        return False
    tokens = msg.split()
    if len(tokens) != 3:
        return False
    if tokens[0] != 'cytuj':
        return False
    if tokens[1] != 'pnnn':
        return False
    try:
        return int(tokens[2])
    except:
        return False

Tam widziałem też rozwiązanie z wyrażeniami regularnymi, pewnie warto się ich nauczyć, ale pythonowy interfejs do nich jest raczej słaby (ogólnie python przy bliższym kontakcie okazuje się raczej słaby, ale mimo wszystko warto go znać)
Re: elementarne pytania z pythona
#216858
Author: fir
Date: Fri, 10 Apr 2020 19:07
52 lines
4079 bytes
W dniu piątek, 10 kwietnia 2020 20:47:11 UTC+2 użytkownik godek...@gmail.com napisał:
> W dniu piątek, 10 kwietnia 2020 12:59:03 UTC+2 użytkownik fir napisał:
> > ostatnio troche odpoczalem i mysle sobie by cos postudiowac moze rootkity moze opencl..ale stanelo jadnak na podstawah pythona ;C
> > 
> > morugam bo jest to troche lamerskie ale z drugiej strony potrzebowalem napisac bota na nasz ircowy kanal
> > 
> > nie znam jednak zupelnych podstaw na dwutygodniowe lektury podrecznikow troche szkoda mi czasu i moze tu bedzie szybciej
> > 
> > mam test typu
> > 
> > msg = "cytuj pnnn 1232"
> > 
> > i potrzebuje dobrac sie do tej trzeciej liczby i pobrac jej wartosc, pod warunkiem ze pocztek stringa bedzie wlasnie "cytuj pnnn" z kolei jesli tam bedzie nic albo nie liczna tez chcialbym miec to zdetektowane
> > 
> > jaki to kod? tnx
> 
> to masz tak: jak napiszesz
> 
> msg.split()
> 
> to dostaniesz listę trzech stringów:
> 
> ['cytuj', 'pnnn', '1332']
> 
> i teraz możesz sobie napisać np. takie coś:
> 
> def dziwny_warunek_firra(msg):
>     if not isinstance(msg, str):
>         return False
>     tokens = msg.split()
>     if len(tokens) != 3:
>         return False
>     if tokens[0] != 'cytuj':
>         return False
>     if tokens[1] != 'pnnn':
>         return False
>     try:
>         return int(tokens[2])
>     except:
>         return False
> 
> Tam widziałem też rozwiązanie z wyrażeniami regularnymi, pewnie warto się ich nauczyć, ale pythonowy interfejs do nich jest raczej słaby (ogólnie python przy bliższym kontakcie okazuje się raczej słaby, ale mimo wszystko warto go znać)

ok tnx sprawdze oba - to wyzej zreszta na dluzsza mete jest pewnie lepsze (tego schematu split sam uzywam w c hdzie sam go wydedukowalem z pewnych rzeczy i wiem jak jest dobre, bije raczeh takie reczne zezbienie jak te wyrazenia regularne alebo skakanie jakimis kursorami bo wydaje mi sie ze skladanie tych dwu ostatnich metod skladuje balagan a takie splity go wrecz oczyszczaja - ale to taka uwaga teoretyczna ;c)

python mi sie jako tako podoba ale nie mam do niego tak perfekcjonistycznego podejscia jakie mam (lub przynajmniej miewam, w miare sil, mowie miewam bo cos mi ich ostatnie brakuje) do c

do piania ircowego bota akurat ten python jest super, python wogole wydaje sie dobry do programowania wszerz (klecenia ronych uslug), pewnie nie za bardzo do kodowania wglab

w bocie chaialabym wlasnie wystawic pare takich uslug ktore moge wywolywac z poziomu itca nt tlumacz, pogoda, newsy, wikipedia, cytaty z ksiazki... panie co jeszcze mozna do dac i jakimi modulami

ma ktos jakies pomysly?
Re: elementarne pytania z pythona
#216859
Author: fir
Date: Fri, 10 Apr 2020 20:32
64 lines
4650 bytes
W dniu piątek, 10 kwietnia 2020 21:07:17 UTC+2 użytkownik fir napisał:
> W dniu piątek, 10 kwietnia 2020 20:47:11 UTC+2 użytkownik godek...@gmail.com napisał:
> > W dniu piątek, 10 kwietnia 2020 12:59:03 UTC+2 użytkownik fir napisał:
> > > ostatnio troche odpoczalem i mysle sobie by cos postudiowac moze rootkity moze opencl..ale stanelo jadnak na podstawah pythona ;C
> > > 
> > > morugam bo jest to troche lamerskie ale z drugiej strony potrzebowalem napisac bota na nasz ircowy kanal
> > > 
> > > nie znam jednak zupelnych podstaw na dwutygodniowe lektury podrecznikow troche szkoda mi czasu i moze tu bedzie szybciej
> > > 
> > > mam test typu
> > > 
> > > msg = "cytuj pnnn 1232"
> > > 
> > > i potrzebuje dobrac sie do tej trzeciej liczby i pobrac jej wartosc, pod warunkiem ze pocztek stringa bedzie wlasnie "cytuj pnnn" z kolei jesli tam bedzie nic albo nie liczna tez chcialbym miec to zdetektowane
> > > 
> > > jaki to kod? tnx
> > 
> > to masz tak: jak napiszesz
> > 
> > msg.split()
> > 
> > to dostaniesz listę trzech stringów:
> > 
> > ['cytuj', 'pnnn', '1332']
> > 
> > i teraz możesz sobie napisać np. takie coś:
> > 
> > def dziwny_warunek_firra(msg):
> >     if not isinstance(msg, str):
> >         return False
> >     tokens = msg.split()
> >     if len(tokens) != 3:
> >         return False
> >     if tokens[0] != 'cytuj':
> >         return False
> >     if tokens[1] != 'pnnn':
> >         return False
> >     try:
> >         return int(tokens[2])
> >     except:
> >         return False
> > 
> > Tam widziałem też rozwiązanie z wyrażeniami regularnymi, pewnie warto się ich nauczyć, ale pythonowy interfejs do nich jest raczej słaby (ogólnie python przy bliższym kontakcie okazuje się raczej słaby, ale mimo wszystko warto go znać)
> 
> ok tnx sprawdze oba - to wyzej zreszta na dluzsza mete jest pewnie lepsze (tego schematu split sam uzywam w c hdzie sam go wydedukowalem z pewnych rzeczy i wiem jak jest dobre, bije raczeh takie reczne zezbienie jak te wyrazenia regularne alebo skakanie jakimis kursorami bo wydaje mi sie ze skladanie tych dwu ostatnich metod skladuje balagan a takie splity go wrecz oczyszczaja - ale to taka uwaga teoretyczna ;c)
> 
> python mi sie jako tako podoba ale nie mam do niego tak perfekcjonistycznego podejscia jakie mam (lub przynajmniej miewam, w miare sil, mowie miewam bo cos mi ich ostatnie brakuje) do c
> 
> do piania ircowego bota akurat ten python jest super, python wogole wydaje sie dobry do programowania wszerz (klecenia ronych uslug), pewnie nie za bardzo do kodowania wglab
> 
> w bocie chaialabym wlasnie wystawic pare takich uslug ktore moge wywolywac z poziomu itca nt tlumacz, pogoda, newsy, wikipedia, cytaty z ksiazki... panie co jeszcze mozna do dac i jakimi modulami
> 
> ma ktos jakies pomysly?

jeszcze pytanko mzoe ktos wie, jest taki modul 

https://pypi.org/project/wikipedia/#description

ale nei dziala za bardzo na pythonie 2.7
mimo ze tam nizej jest napisane zdaje sie ze pownien dzialac

,mmoj skrypt jest dla 2.7 i nei che mis ie przepisywac licznych wywolan, przynajmniej poki co

czy da sie w takim wypadku znalezc jakas np starsza wersje do sciagniecia ktora by dzialala, lub jakis odpowiednik?
Re: elementarne pytania z pythona
#216865
Author: fir
Date: Sat, 11 Apr 2020 09:16
53 lines
3409 bytes
W dniu piątek, 10 kwietnia 2020 20:35:21 UTC+2 użytkownik fir napisał:
> W dniu piątek, 10 kwietnia 2020 19:33:33 UTC+2 użytkownik Piotr Chamera napisał:
> > W dniu 2020-04-10 o 12:59, fir pisze:
> > > ostatnio troche odpoczalem i mysle sobie by cos postudiowac moze rootkity moze opencl..ale stanelo jadnak na podstawah pythona ;C
> > > 
> > > morugam bo jest to troche lamerskie ale z drugiej strony potrzebowalem napisac bota na nasz ircowy kanal
> > > 
> > > nie znam jednak zupelnych podstaw na dwutygodniowe lektury podrecznikow troche szkoda mi czasu i moze tu bedzie szybciej
> > > 
> > > mam test typu
> > > 
> > > msg = "cytuj pnnn 1232"
> > > 
> > > i potrzebuje dobrac sie do tej trzeciej liczby i pobrac jej wartosc, pod warunkiem ze pocztek stringa bedzie wlasnie "cytuj pnnn" z kolei jesli tam bedzie nic albo nie liczna tez chcialbym miec to zdetektowane
> > > 
> > > jaki to kod? tnx
> > 
> > Można użyć wyrażeń, regularnych (pisałem w pythonie 2.7, w 3.x powinno 
> > być podobnie)
> > 
> > import re
> > m = re.match(u"(cytuj pnnn )(\d+)", msg)
> > 
> > jeśli nie dopasuje do wzorca m będzie None
> > jeśli dopasuje, to za pomocą group() można pobrać poszczególne części 
> > dopasowania
> > 
> >  >>> m.group(0)
> > u'cytuj pnnn 1234'
> > 
> >  >>> m.group(1)
> > u'cytuj pnnn '
> > 
> >  >>> m.group(2)
> > u'1234'
> > 
> >  >>> int(m.group(2))
> > 1234
> 
> ok tnx zobacze troche pozniej, tez python 2.7

nie dziala ale poprawdzie to troche uproscilem konkretny string jest taki

:fir!~pirc@vhost:freedom.freakz PRIVMSG #grunge :minion ogniem 222


chodzi o to by ignorowal poczatek wymagal ":minion ogniem" i bral liczbe po tym

ta liczba pozniej jest numerem lini z pliku tekstaowego ksiazki np "ogniem i mieczem" ktor moj bot minion zacytuje na kanal

wie moze kolega?

(wiem ze moglbym sie wczytac ale narazi enie mam sily i poszukuje prostej drogi poki nie skumuluje energii)
Re: elementarne pytania z pythona
#216860
Author: fir
Date: Sat, 11 Apr 2020 09:26
67 lines
5278 bytes
W dniu piątek, 10 kwietnia 2020 22:32:38 UTC+2 użytkownik fir napisał:
> W dniu piątek, 10 kwietnia 2020 21:07:17 UTC+2 użytkownik fir napisał:
> > W dniu piątek, 10 kwietnia 2020 20:47:11 UTC+2 użytkownik godek...@gmail.com napisał:
> > > W dniu piątek, 10 kwietnia 2020 12:59:03 UTC+2 użytkownik fir napisał:
> > > > ostatnio troche odpoczalem i mysle sobie by cos postudiowac moze rootkity moze opencl..ale stanelo jadnak na podstawah pythona ;C
> > > > 
> > > > morugam bo jest to troche lamerskie ale z drugiej strony potrzebowalem napisac bota na nasz ircowy kanal
> > > > 
> > > > nie znam jednak zupelnych podstaw na dwutygodniowe lektury podrecznikow troche szkoda mi czasu i moze tu bedzie szybciej
> > > > 
> > > > mam test typu
> > > > 
> > > > msg = "cytuj pnnn 1232"
> > > > 
> > > > i potrzebuje dobrac sie do tej trzeciej liczby i pobrac jej wartosc, pod warunkiem ze pocztek stringa bedzie wlasnie "cytuj pnnn" z kolei jesli tam bedzie nic albo nie liczna tez chcialbym miec to zdetektowane
> > > > 
> > > > jaki to kod? tnx
> > > 
> > > to masz tak: jak napiszesz
> > > 
> > > msg.split()
> > > 
> > > to dostaniesz listę trzech stringów:
> > > 
> > > ['cytuj', 'pnnn', '1332']
> > > 
> > > i teraz możesz sobie napisać np. takie coś:
> > > 
> > > def dziwny_warunek_firra(msg):
> > >     if not isinstance(msg, str):
> > >         return False
> > >     tokens = msg.split()
> > >     if len(tokens) != 3:
> > >         return False
> > >     if tokens[0] != 'cytuj':
> > >         return False
> > >     if tokens[1] != 'pnnn':
> > >         return False
> > >     try:
> > >         return int(tokens[2])
> > >     except:
> > >         return False
> > > 
> > > Tam widziałem też rozwiązanie z wyrażeniami regularnymi, pewnie warto się ich nauczyć, ale pythonowy interfejs do nich jest raczej słaby (ogólnie python przy bliższym kontakcie okazuje się raczej słaby, ale mimo wszystko warto go znać)
> > 
> > ok tnx sprawdze oba - to wyzej zreszta na dluzsza mete jest pewnie lepsze (tego schematu split sam uzywam w c hdzie sam go wydedukowalem z pewnych rzeczy i wiem jak jest dobre, bije raczeh takie reczne zezbienie jak te wyrazenia regularne alebo skakanie jakimis kursorami bo wydaje mi sie ze skladanie tych dwu ostatnich metod skladuje balagan a takie splity go wrecz oczyszczaja - ale to taka uwaga teoretyczna ;c)
> > 
> > python mi sie jako tako podoba ale nie mam do niego tak perfekcjonistycznego podejscia jakie mam (lub przynajmniej miewam, w miare sil, mowie miewam bo cos mi ich ostatnie brakuje) do c
> > 
> > do piania ircowego bota akurat ten python jest super, python wogole wydaje sie dobry do programowania wszerz (klecenia ronych uslug), pewnie nie za bardzo do kodowania wglab
> > 
> > w bocie chaialabym wlasnie wystawic pare takich uslug ktore moge wywolywac z poziomu itca nt tlumacz, pogoda, newsy, wikipedia, cytaty z ksiazki... panie co jeszcze mozna do dac i jakimi modulami
> > 
> > ma ktos jakies pomysly?
> 
> jeszcze pytanko mzoe ktos wie, jest taki modul 
> 
> https://pypi.org/project/wikipedia/#description
> 
> ale nei dziala za bardzo na pythonie 2.7
> mimo ze tam nizej jest napisane zdaje sie ze pownien dzialac
> 
> ,mmoj skrypt jest dla 2.7 i nei che mis ie przepisywac licznych wywolan, przynajmniej poki co
> 
> czy da sie w takim wypadku znalezc jakas np starsza wersje do sciagniecia ktora by dzialala, lub jakis odpowiednik?

znalazlem starsze wersje ale nie dzialaja, sypia sie cos na referencjach do innych modlulow ktore normalnie dzialaja w 2.7 ale w polczanieu z ymi wikipediami sie sypia
Re: elementarne pytania z pythona
#216866
Author: Piotr Chamera
Date: Sat, 11 Apr 2020 09:33
65 lines
3609 bytes
W dniu 2020-04-11 o 11:16, fir pisze:
> W dniu piątek, 10 kwietnia 2020 20:35:21 UTC+2 użytkownik fir napisał:
>> W dniu piątek, 10 kwietnia 2020 19:33:33 UTC+2 użytkownik Piotr Chamera napisał:
>>> W dniu 2020-04-10 o 12:59, fir pisze:
>>>> ostatnio troche odpoczalem i mysle sobie by cos postudiowac moze rootkity moze opencl..ale stanelo jadnak na podstawah pythona ;C
>>>>
>>>> morugam bo jest to troche lamerskie ale z drugiej strony potrzebowalem napisac bota na nasz ircowy kanal
>>>>
>>>> nie znam jednak zupelnych podstaw na dwutygodniowe lektury podrecznikow troche szkoda mi czasu i moze tu bedzie szybciej
>>>>
>>>> mam test typu
>>>>
>>>> msg = "cytuj pnnn 1232"
>>>>
>>>> i potrzebuje dobrac sie do tej trzeciej liczby i pobrac jej wartosc, pod warunkiem ze pocztek stringa bedzie wlasnie "cytuj pnnn" z kolei jesli tam bedzie nic albo nie liczna tez chcialbym miec to zdetektowane
>>>>
>>>> jaki to kod? tnx
>>>
>>> Można użyć wyrażeń, regularnych (pisałem w pythonie 2.7, w 3.x powinno
>>> być podobnie)
>>>
>>> import re
>>> m = re.match(u"(cytuj pnnn )(\d+)", msg)
>>>
>>> jeśli nie dopasuje do wzorca m będzie None
>>> jeśli dopasuje, to za pomocą group() można pobrać poszczególne części
>>> dopasowania
>>>
>>>   >>> m.group(0)
>>> u'cytuj pnnn 1234'
>>>
>>>   >>> m.group(1)
>>> u'cytuj pnnn '
>>>
>>>   >>> m.group(2)
>>> u'1234'
>>>
>>>   >>> int(m.group(2))
>>> 1234
>>
>> ok tnx zobacze troche pozniej, tez python 2.7
> 
> nie dziala ale poprawdzie to troche uproscilem konkretny string jest taki
> 
> :fir!~pirc@vhost:freedom.freakz PRIVMSG #grunge :minion ogniem 222
> 
> 
> chodzi o to by ignorowal poczatek wymagal ":minion ogniem" i bral liczbe po tym
> 
> ta liczba pozniej jest numerem lini z pliku tekstaowego ksiazki np "ogniem i mieczem" ktor moj bot minion zacytuje na kanal
> 
> wie moze kolega?
> 
> (wiem ze moglbym sie wczytac ale narazi enie mam sily i poszukuje prostej drogi poki nie skumuluje energii)
> 

Warto przejrzeć przynajmniej dokumentację modułu wyrażeń regularnach.
przy dopasowaniu wzorców tekstowych to bardzo dobre narządzie.

 >>> import re
 >>> msg = u":fir!~pirc@vhost:freedom.freakz PRIVMSG #grunge :minion 
ogniem 222"
 >>> m = re.match(u".*?(:minion ogniem )(\d+)", msg)
 >>> int(m.group(2))
222
Re: elementarne pytania z pythona
#216867
Author: fir
Date: Sat, 11 Apr 2020 09:55
77 lines
4423 bytes
W dniu sobota, 11 kwietnia 2020 11:33:54 UTC+2 użytkownik Piotr Chamera napisał:
> W dniu 2020-04-11 o 11:16, fir pisze:
> > W dniu piątek, 10 kwietnia 2020 20:35:21 UTC+2 użytkownik fir napisał:
> >> W dniu piątek, 10 kwietnia 2020 19:33:33 UTC+2 użytkownik Piotr Chamera napisał:
> >>> W dniu 2020-04-10 o 12:59, fir pisze:
> >>>> ostatnio troche odpoczalem i mysle sobie by cos postudiowac moze rootkity moze opencl..ale stanelo jadnak na podstawah pythona ;C
> >>>>
> >>>> morugam bo jest to troche lamerskie ale z drugiej strony potrzebowalem napisac bota na nasz ircowy kanal
> >>>>
> >>>> nie znam jednak zupelnych podstaw na dwutygodniowe lektury podrecznikow troche szkoda mi czasu i moze tu bedzie szybciej
> >>>>
> >>>> mam test typu
> >>>>
> >>>> msg = "cytuj pnnn 1232"
> >>>>
> >>>> i potrzebuje dobrac sie do tej trzeciej liczby i pobrac jej wartosc, pod warunkiem ze pocztek stringa bedzie wlasnie "cytuj pnnn" z kolei jesli tam bedzie nic albo nie liczna tez chcialbym miec to zdetektowane
> >>>>
> >>>> jaki to kod? tnx
> >>>
> >>> Można użyć wyrażeń, regularnych (pisałem w pythonie 2.7, w 3.x powinno
> >>> być podobnie)
> >>>
> >>> import re
> >>> m = re.match(u"(cytuj pnnn )(\d+)", msg)
> >>>
> >>> jeśli nie dopasuje do wzorca m będzie None
> >>> jeśli dopasuje, to za pomocą group() można pobrać poszczególne części
> >>> dopasowania
> >>>
> >>>   >>> m.group(0)
> >>> u'cytuj pnnn 1234'
> >>>
> >>>   >>> m.group(1)
> >>> u'cytuj pnnn '
> >>>
> >>>   >>> m.group(2)
> >>> u'1234'
> >>>
> >>>   >>> int(m.group(2))
> >>> 1234
> >>
> >> ok tnx zobacze troche pozniej, tez python 2.7
> > 
> > nie dziala ale poprawdzie to troche uproscilem konkretny string jest taki
> > 
> > :fir!~pirc@vhost:freedom.freakz PRIVMSG #grunge :minion ogniem 222
> > 
> > 
> > chodzi o to by ignorowal poczatek wymagal ":minion ogniem" i bral liczbe po tym
> > 
> > ta liczba pozniej jest numerem lini z pliku tekstaowego ksiazki np "ogniem i mieczem" ktor moj bot minion zacytuje na kanal
> > 
> > wie moze kolega?
> > 
> > (wiem ze moglbym sie wczytac ale narazi enie mam sily i poszukuje prostej drogi poki nie skumuluje energii)
> > 
> 
> Warto przejrzeć przynajmniej dokumentację modułu wyrażeń regularnach.
> przy dopasowaniu wzorców tekstowych to bardzo dobre narządzie.
> 
>  >>> import re
>  >>> msg = u":fir!~pirc@vhost:freedom.freakz PRIVMSG #grunge :minion 
> ogniem 222"
>  >>> m = re.match(u".*?(:minion ogniem )(\d+)", msg)
>  >>> int(m.group(2))
> 222

ale jak odrzucic kod z tym none
ten kod chyba dziala ale czy m moze byc none? i czy skipnie to say gdy nie znajdzie wyrazenia? (doucze sie z tego z czasem ale narzie nie che sie w to zbyt wczytywac, cala amsa innych rzeczy nie robi tymczasem problemu )

      mm = re.match(u".*?(:minion ogniem )(\d+)", ircmsg)

      m = int(mm.group(2))

      if m :
        say(      ogniem_i_mieczem_text[m])
        say(      ogniem_i_mieczem_text[m+1])
Re: elementarne pytania z pythona
#216868
Author: fir
Date: Sat, 11 Apr 2020 10:06
89 lines
5267 bytes
W dniu sobota, 11 kwietnia 2020 11:55:45 UTC+2 użytkownik fir napisał:
> W dniu sobota, 11 kwietnia 2020 11:33:54 UTC+2 użytkownik Piotr Chamera napisał:
> > W dniu 2020-04-11 o 11:16, fir pisze:
> > > W dniu piątek, 10 kwietnia 2020 20:35:21 UTC+2 użytkownik fir napisał:
> > >> W dniu piątek, 10 kwietnia 2020 19:33:33 UTC+2 użytkownik Piotr Chamera napisał:
> > >>> W dniu 2020-04-10 o 12:59, fir pisze:
> > >>>> ostatnio troche odpoczalem i mysle sobie by cos postudiowac moze rootkity moze opencl..ale stanelo jadnak na podstawah pythona ;C
> > >>>>
> > >>>> morugam bo jest to troche lamerskie ale z drugiej strony potrzebowalem napisac bota na nasz ircowy kanal
> > >>>>
> > >>>> nie znam jednak zupelnych podstaw na dwutygodniowe lektury podrecznikow troche szkoda mi czasu i moze tu bedzie szybciej
> > >>>>
> > >>>> mam test typu
> > >>>>
> > >>>> msg = "cytuj pnnn 1232"
> > >>>>
> > >>>> i potrzebuje dobrac sie do tej trzeciej liczby i pobrac jej wartosc, pod warunkiem ze pocztek stringa bedzie wlasnie "cytuj pnnn" z kolei jesli tam bedzie nic albo nie liczna tez chcialbym miec to zdetektowane
> > >>>>
> > >>>> jaki to kod? tnx
> > >>>
> > >>> Można użyć wyrażeń, regularnych (pisałem w pythonie 2.7, w 3.x powinno
> > >>> być podobnie)
> > >>>
> > >>> import re
> > >>> m = re.match(u"(cytuj pnnn )(\d+)", msg)
> > >>>
> > >>> jeśli nie dopasuje do wzorca m będzie None
> > >>> jeśli dopasuje, to za pomocą group() można pobrać poszczególne części
> > >>> dopasowania
> > >>>
> > >>>   >>> m.group(0)
> > >>> u'cytuj pnnn 1234'
> > >>>
> > >>>   >>> m.group(1)
> > >>> u'cytuj pnnn '
> > >>>
> > >>>   >>> m.group(2)
> > >>> u'1234'
> > >>>
> > >>>   >>> int(m.group(2))
> > >>> 1234
> > >>
> > >> ok tnx zobacze troche pozniej, tez python 2.7
> > > 
> > > nie dziala ale poprawdzie to troche uproscilem konkretny string jest taki
> > > 
> > > :fir!~pirc@vhost:freedom.freakz PRIVMSG #grunge :minion ogniem 222
> > > 
> > > 
> > > chodzi o to by ignorowal poczatek wymagal ":minion ogniem" i bral liczbe po tym
> > > 
> > > ta liczba pozniej jest numerem lini z pliku tekstaowego ksiazki np "ogniem i mieczem" ktor moj bot minion zacytuje na kanal
> > > 
> > > wie moze kolega?
> > > 
> > > (wiem ze moglbym sie wczytac ale narazi enie mam sily i poszukuje prostej drogi poki nie skumuluje energii)
> > > 
> > 
> > Warto przejrzeć przynajmniej dokumentację modułu wyrażeń regularnach.
> > przy dopasowaniu wzorców tekstowych to bardzo dobre narządzie.
> > 
> >  >>> import re
> >  >>> msg = u":fir!~pirc@vhost:freedom.freakz PRIVMSG #grunge :minion 
> > ogniem 222"
> >  >>> m = re.match(u".*?(:minion ogniem )(\d+)", msg)
> >  >>> int(m.group(2))
> > 222
> 
> ale jak odrzucic kod z tym none
> ten kod chyba dziala ale czy m moze byc none? i czy skipnie to say gdy nie znajdzie wyrazenia? (doucze sie z tego z czasem ale narzie nie che sie w to zbyt wczytywac, cala amsa innych rzeczy nie robi tymczasem problemu )
> 
>       mm = re.match(u".*?(:minion ogniem )(\d+)", ircmsg)
> 
>       m = int(mm.group(2))
> 
>       if m :
>         say(      ogniem_i_mieczem_text[m])
>         say(      ogniem_i_mieczem_text[m+1])

jeszcze jedno pytanke, jesli mozn, ulatwiloby mi sprawe

to ogniem i mieczem przkonwertowalem sobie z epub na txt jakism konwerterem
zachowal unicode itd chyab wszystko jest ok poza faktem ze tam gdzie powinno byc jedno newline 0x0d 0x0a pwoiedzmy jest za kazdym razem 0x0a 0x0a 0x0a (trzy 0A)
i wiekszosc edytorow traktuje to jako 3 newliny

jak sprawdzc czy 
ogniem_i_mieczem_text[m] jest pojedyncza linia z 0x0a? ew jak napisac prsty konwerter w pythonie ktory by polknal plik i zamianil kazde 3 0x0A na jedno 0xA

tnx
Re: elementarne pytania z pythona
#216871
Author: Piotr Chamera
Date: Sat, 11 Apr 2020 10:09
21 lines
2204 bytes
W dniu 2020-04-11 o 11:55, fir pisze:
> ale jak odrzucic kod z tym none
> ten kod chyba dziala ale czy m moze byc none? i czy skipnie to say gdy nie znajdzie wyrazenia? (doucze sie z tego z czasem ale narzie nie che sie w to zbyt wczytywac, cala amsa innych rzeczy nie robi tymczasem problemu )
> 
>        mm = re.match(u".*?(:minion ogniem )(\d+)", ircmsg)
> 
>        m = int(mm.group(2))
> 
>        if m :
>          say(      ogniem_i_mieczem_text[m])
>          say(      ogniem_i_mieczem_text[m+1])
> 

to raczej powinno być tak, bo jak nie dopasuje,
to w mm jest None i nie ma czego zamienić na inta:

         mm = re.match(u".*?(:minion ogniem )(\d+)", ircmsg)
         if mm :
	   m = int(mm.group(2))
            say(      ogniem_i_mieczem_text[m])
            say(      ogniem_i_mieczem_text[m+1])
Re: elementarne pytania z pythona
#216872
Author: fir
Date: Sat, 11 Apr 2020 10:12
24 lines
2571 bytes
W dniu sobota, 11 kwietnia 2020 12:09:12 UTC+2 użytkownik Piotr Chamera napisał:
> W dniu 2020-04-11 o 11:55, fir pisze:
> > ale jak odrzucic kod z tym none
> > ten kod chyba dziala ale czy m moze byc none? i czy skipnie to say gdy nie znajdzie wyrazenia? (doucze sie z tego z czasem ale narzie nie che sie w to zbyt wczytywac, cala amsa innych rzeczy nie robi tymczasem problemu )
> > 
> >        mm = re.match(u".*?(:minion ogniem )(\d+)", ircmsg)
> > 
> >        m = int(mm.group(2))
> > 
> >        if m :
> >          say(      ogniem_i_mieczem_text[m])
> >          say(      ogniem_i_mieczem_text[m+1])
> > 
> 
> to raczej powinno być tak, bo jak nie dopasuje,
> to w mm jest None i nie ma czego zamienić na inta:
> 
>          mm = re.match(u".*?(:minion ogniem )(\d+)", ircmsg)
>          if mm :
> 	   m = int(mm.group(2))
>             say(      ogniem_i_mieczem_text[m])
>             say(      ogniem_i_mieczem_text[m+1])

ok, a co z tym 0x0a ?
Re: elementarne pytania z pythona
#216869
Author: Piotr Chamera
Date: Sat, 11 Apr 2020 10:59
72 lines
3159 bytes
W dniu 2020-04-11 o 12:06, fir pisze:
> jeszcze jedno pytanke, jesli mozn, ulatwiloby mi sprawe
> 
> to ogniem i mieczem przkonwertowalem sobie z epub na txt jakism konwerterem
> zachowal unicode itd chyab wszystko jest ok poza faktem ze tam gdzie powinno byc jedno newline 0x0d 0x0a pwoiedzmy jest za kazdym razem 0x0a 0x0a 0x0a (trzy 0A)
> i wiekszosc edytorow traktuje to jako 3 newliny
> 
> jak sprawdzc czy
> ogniem_i_mieczem_text[m] jest pojedyncza linia z 0x0a? ew jak napisac prsty konwerter w pythonie ktory by polknal plik i zamianil kazde 3 0x0A na jedno 0xA

To już moja ostatnia odpowiedź dzisiaj.


Konwersja całości, to najprościej chyba jakoś tak:

s jest twoim źródłowym tekstem

 >>> s.replace(u"\u000a\u000a\u000a", u"\u000a")

albo

 >>> s.replace(u"\n\n\n", u"\n")

ale nie wiem, czy interpretacja \n nie zależy od systemu

uwaga: to zwraca nowego stringa, nie podmienia w oryginalnym.




A sprawdzania można zrobić np. tak:

przykładowy wieloliniowy tekst:

s = u"""ahjklsl


ajkshgjkgh


hsajhkjhskj


hnajkhjhjl"""


poniższe sprawdza czy podany tekst dzieli się na określone 3 części

 >>> m = re.match(u"(.*?)(\u000a+)(.*)", s, flags=re.DOTALL)

(.*?) ta grupa dopasowuje dowolny tekst w sposób niezachłanny
(\u000a+) ta grupa dopasowuje jeden lub więcej znaków końca linii
(.*) tu wpychamy całą resztę tekstu

i teraz możemy sprawdzić

jaki był pierwszy wiersz

 >>> m.group(1)
u'ahjklsl'

ile znaków końca linii było po pierwszym wierszu
 >>> len(m.group(2))
3
 >>> m.group(2)
u'\n\n\n'

czy w tekście było coś jeszcze
 >>> len(m.group(3))
37
 >>> m.group(3)
u'ajkshgjkgh\n\n\nhsajhkjhskj\n\n\nhnajkhjhjl'
Re: elementarne pytania z pythona
#216870
Author: fir
Date: Sat, 11 Apr 2020 11:04
101 lines
3940 bytes
W dniu sobota, 11 kwietnia 2020 12:59:21 UTC+2 użytkownik Piotr Chamera napisał:
> W dniu 2020-04-11 o 12:06, fir pisze:
> > jeszcze jedno pytanke, jesli mozn, ulatwiloby mi sprawe
> > 
> > to ogniem i mieczem przkonwertowalem sobie z epub na txt jakism konwerterem
> > zachowal unicode itd chyab wszystko jest ok poza faktem ze tam gdzie powinno byc jedno newline 0x0d 0x0a pwoiedzmy jest za kazdym razem 0x0a 0x0a 0x0a (trzy 0A)
> > i wiekszosc edytorow traktuje to jako 3 newliny
> > 
> > jak sprawdzc czy
> > ogniem_i_mieczem_text[m] jest pojedyncza linia z 0x0a? ew jak napisac prsty konwerter w pythonie ktory by polknal plik i zamianil kazde 3 0x0A na jedno 0xA
> 
> To już moja ostatnia odpowiedź dzisiaj.
> 
> 
> Konwersja całości, to najprościej chyba jakoś tak:
> 
> s jest twoim źródłowym tekstem
> 
>  >>> s.replace(u"\u000a\u000a\u000a", u"\u000a")
> 
> albo
> 
>  >>> s.replace(u"\n\n\n", u"\n")
> 
> ale nie wiem, czy interpretacja \n nie zależy od systemu
> 
> uwaga: to zwraca nowego stringa, nie podmienia w oryginalnym.
> 
> 
> 
> 
> A sprawdzania można zrobić np. tak:
> 
> przykładowy wieloliniowy tekst:
> 
> s = u"""ahjklsl
> 
> 
> ajkshgjkgh
> 
> 
> hsajhkjhskj
> 
> 
> hnajkhjhjl"""
> 
> 
> poniższe sprawdza czy podany tekst dzieli się na określone 3 części
> 
>  >>> m = re.match(u"(.*?)(\u000a+)(.*)", s, flags=re.DOTALL)
> 
> (.*?) ta grupa dopasowuje dowolny tekst w sposób niezachłanny
> (\u000a+) ta grupa dopasowuje jeden lub więcej znaków końca linii
> (.*) tu wpychamy całą resztę tekstu
> 
> i teraz możemy sprawdzić
> 
> jaki był pierwszy wiersz
> 
>  >>> m.group(1)
> u'ahjklsl'
> 
> ile znaków końca linii było po pierwszym wierszu
>  >>> len(m.group(2))
> 3
>  >>> m.group(2)
> u'\n\n\n'
> 
> czy w tekście było coś jeszcze
>  >>> len(m.group(3))
> 37
>  >>> m.group(3)
> u'ajkshgjkgh\n\n\nhsajhkjhskj\n\n\nhnajkhjhjl'

ok, tnx w sumie ten plik przerobilem sobie programikiem w c

#include "green-fire.h"



int main()
{
 chunk file = LoadChunk("file.txt");

 int len = ChunkLength(file);

 FILE *f = fopen("tile_out.txt", "wb");

 for(int i=0; i<len; i++)
 {
  if(file.beg[i]==0xa && file.beg[i+1]==0xa) continue;

  fputc(file.beg[i], f);
 }

 fclose(f);

 return 2020;

}
 poki co costam dziala ale czas odpoczac
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads