eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming › python i stringi
Ilość wypowiedzi w tym wątku: 11

  • 1. Data: 2016-10-06 09:46:24
    Temat: python i stringi
    Od: Roman Tyczka <n...@b...no>

    Witam,

    Używam czasami pythonowej konsoli jako kalkulatora, teraz zapragnąłem
    policzyć md5 unicodowego stringa, jednak nie znam pythona jeszcze zbytnio i
    się zawiesiłem:

    >>> import hashlib
    >>> ustr = u"Jeszcze dłuższy i bardzo długi string z ółęść oraz ;%$#@[ i innymi
    znakami 0099786764553 na końcu"
    >>> type(ustr)
    <type 'unicode'>
    >>> hashlib.md5(ustr).hexdigest()
    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    UnicodeEncodeError: 'ascii' codec can't encode character u'\u0142' in
    position 9: ordinal not in range(128)

    Jak wybrnąć i policzyć jednak tego hasha?

    ps. python 2.7.9 na windows

    --
    pozdrawiam
    Roman Tyczka


  • 2. Data: 2016-10-06 10:10:29
    Temat: Re: python i stringi
    Od: g...@g...com

    W dniu czwartek, 6 października 2016 09:46:26 UTC+2 użytkownik Roman Tyczka napisał:
    > Witam,
    >
    > Używam czasami pythonowej konsoli jako kalkulatora, teraz zapragnąłem
    > policzyć md5 unicodowego stringa, jednak nie znam pythona jeszcze zbytnio i
    > się zawiesiłem:
    >
    > >>> import hashlib
    > >>> ustr = u"Jeszcze dłuższy i bardzo długi string z ółęść oraz ;%$#@[ i innymi
    znakami 0099786764553 na końcu"
    > >>> type(ustr)
    > <type 'unicode'>
    > >>> hashlib.md5(ustr).hexdigest()
    > Traceback (most recent call last):
    > File "<stdin>", line 1, in <module>
    > UnicodeEncodeError: 'ascii' codec can't encode character u'\u0142' in
    > position 9: ordinal not in range(128)
    >
    > Jak wybrnąć i policzyć jednak tego hasha?
    >
    > ps. python 2.7.9 na windows

    może np. google python unicode to ascii


  • 3. Data: 2016-10-06 10:19:25
    Temat: Re: python i stringi
    Od: Roman Tyczka <n...@b...no>

    On Thu, 6 Oct 2016 01:10:29 -0700 (PDT), g...@g...com wrote:

    >>>>> ustr = u"Jeszcze dłuższy i bardzo długi string z ółęść oraz ;%$#@[ i innymi
    znakami 0099786764553 na końcu"
    >>>>> type(ustr)
    >> <type 'unicode'>
    >>>>> hashlib.md5(ustr).hexdigest()
    >> Traceback (most recent call last):
    >> File "<stdin>", line 1, in <module>
    >> UnicodeEncodeError: 'ascii' codec can't encode character u'\u0142' in
    >> position 9: ordinal not in range(128)
    >>
    >> Jak wybrnąć i policzyć jednak tego hasha?
    >>
    >> ps. python 2.7.9 na windows
    >
    > może np. google python unicode to ascii

    Po pierwsze nie da się konwertować unicode do ascii.

    Poza tym ja nic nie chcę konwertować, chcę by był potraktowany jako
    unicodowy właśnie, czyli de facto dwubajtowy znak.

    --
    pozdrawiam
    Roman Tyczka


  • 4. Data: 2016-10-06 10:32:07
    Temat: Re: python i stringi
    Od: g...@g...com

    W dniu czwartek, 6 października 2016 10:19:26 UTC+2 użytkownik Roman Tyczka
    > >>>>> ustr = u"Jeszcze dłuższy i bardzo długi string z ółęść oraz ;%$#@[ i innymi
    znakami 0099786764553 na końcu"
    > >>>>> type(ustr)
    > >> <type 'unicode'>
    > >>>>> hashlib.md5(ustr).hexdigest()
    > >> Traceback (most recent call last):
    > >> File "<stdin>", line 1, in <module>
    > >> UnicodeEncodeError: 'ascii' codec can't encode character u'\u0142' in
    > >> position 9: ordinal not in range(128)
    > >>
    > >> Jak wybrnąć i policzyć jednak tego hasha?
    > >>
    > >> ps. python 2.7.9 na windows
    > >
    > > może np. google python unicode to ascii
    >
    > Po pierwsze nie da się konwertować unicode do ascii.
    >
    > Poza tym ja nic nie chcę konwertować, chcę by był potraktowany jako
    > unicodowy właśnie, czyli de facto dwubajtowy znak.

    to może google python unicode to bytes
    python bytes to string
    python md5 unicode


  • 5. Data: 2016-10-06 10:44:12
    Temat: Re: python i stringi
    Od: Roman Tyczka <n...@b...no>

    On Thu, 6 Oct 2016 01:32:07 -0700 (PDT), g...@g...com wrote:

    > W dniu czwartek, 6 października 2016 10:19:26 UTC+2 użytkownik Roman Tyczka
    >>>>>>> ustr = u"Jeszcze dłuższy i bardzo długi string z ółęść oraz ;%$#@[ i innymi
    znakami 0099786764553 na końcu"
    >>>>>>> type(ustr)
    >>>> <type 'unicode'>
    >>>>>>> hashlib.md5(ustr).hexdigest()
    >>>> Traceback (most recent call last):
    >>>> File "<stdin>", line 1, in <module>
    >>>> UnicodeEncodeError: 'ascii' codec can't encode character u'\u0142' in
    >>>> position 9: ordinal not in range(128)
    >>>>
    >>>> Jak wybrnąć i policzyć jednak tego hasha?
    >>>>
    >>>> ps. python 2.7.9 na windows
    >>>
    >>> może np. google python unicode to ascii
    >>
    >> Po pierwsze nie da się konwertować unicode do ascii.
    >>
    >> Poza tym ja nic nie chcę konwertować, chcę by był potraktowany jako
    >> unicodowy właśnie, czyli de facto dwubajtowy znak.
    >
    > to może google python unicode to bytes
    > python bytes to string
    > python md5 unicode

    Jeśli chcesz mi utrzeć nosa tym googlem to ...hmmm, niepotrzebnie. Od
    googla zacząłem. Ale ok, może grupa dyskusyjna służy tylko do kłótni o
    pascala.
    Tak czy owak problem rozwiązałem, nie konwertując do ascii czy tablicy
    bajtów, ale poprawnie deklarując typ unicodowego stringa. I na taką
    praktyczną radę liczyłem.

    Dla potomnych:

    ustr = u"Jeszcze dłuższy i bardzo długi string z ółęść oraz ;%$#@[ i innymi
    znakami 0099786764553 na końcu".encode('utf-16le')

    i ten mały indianin zrobił swoją robotę :-)

    --
    pozdrawiam
    Roman Tyczka


  • 6. Data: 2016-10-06 10:57:07
    Temat: Re: python i stringi
    Od: Piotr Chamera <p...@p...onet.pl>

    W dniu 2016-10-06 o 09:46, Roman Tyczka pisze:
    > Witam,
    >
    > Używam czasami pythonowej konsoli jako kalkulatora, teraz zapragnąłem
    > policzyć md5 unicodowego stringa, jednak nie znam pythona jeszcze zbytnio i
    > się zawiesiłem:
    >
    >>>> import hashlib
    >>>> ustr = u"Jeszcze dłuższy i bardzo długi string z ółęść oraz ;%$#@[ i innymi
    znakami 0099786764553 na końcu"
    >>>> type(ustr)
    > <type 'unicode'>
    >>>> hashlib.md5(ustr).hexdigest()
    > Traceback (most recent call last):
    > File "<stdin>", line 1, in <module>
    > UnicodeEncodeError: 'ascii' codec can't encode character u'\u0142' in
    > position 9: ordinal not in range(128)
    >
    > Jak wybrnąć i policzyć jednak tego hasha?
    >
    > ps. python 2.7.9 na windows
    >

    np tak:
    >>> hashlib.md5(ustr.encode(encoding="utf-8", errors="strict")).hexdigest()

    '32857a03910f204bd5adc4cb2ec2bce8'

    lub tak:
    >>> hashlib.md5(ustr.encode(encoding="utf-16",
    errors="strict")).hexdigest()

    '5da8f084e4da17f9441beccf2fa8b437'

    czyli trzeba jawnie skonwertować tekst unicode do takiego formatu, z
    jakiego chcemy liczyć md5


  • 7. Data: 2016-10-06 11:22:07
    Temat: Re: python i stringi
    Od: Roman Tyczka <n...@b...no>

    On Thu, 6 Oct 2016 10:57:07 +0200, Piotr Chamera wrote:

    >> Jak wybrnąć i policzyć jednak tego hasha?
    >>
    >> ps. python 2.7.9 na windows
    >>
    >
    > np tak:
    > >>> hashlib.md5(ustr.encode(encoding="utf-8", errors="strict")).hexdigest()
    >
    > '32857a03910f204bd5adc4cb2ec2bce8'
    >
    > lub tak:
    > >>> hashlib.md5(ustr.encode(encoding="utf-16",
    > errors="strict")).hexdigest()
    >
    > '5da8f084e4da17f9441beccf2fa8b437'
    >
    > czyli trzeba jawnie skonwertować tekst unicode do takiego formatu, z
    > jakiego chcemy liczyć md5

    A jaki jest domyślny format, gdy zmienną utworzyłem tak:

    >>> ustr = u"Jeszcze dłuższy i bardzo długi string z ółęść oraz ;%$#@[ i innymi
    znakami 0099786764553 na końcu"
    >>> type(ustr)
    <type 'unicode'>

    To jest utf-8? 16? 32?

    --
    pozdrawiam
    Roman Tyczka


  • 8. Data: 2016-10-06 11:50:55
    Temat: Re: python i stringi
    Od: Piotr Chamera <p...@p...onet.pl>

    W dniu 2016-10-06 o 11:22, Roman Tyczka pisze:
    > On Thu, 6 Oct 2016 10:57:07 +0200, Piotr Chamera wrote:
    >
    >>> Jak wybrnąć i policzyć jednak tego hasha?
    >>>
    >>> ps. python 2.7.9 na windows
    >>>
    >>
    >> np tak:
    >> >>> hashlib.md5(ustr.encode(encoding="utf-8", errors="strict")).hexdigest()
    >>
    >> '32857a03910f204bd5adc4cb2ec2bce8'
    >>
    >> lub tak:
    >> >>> hashlib.md5(ustr.encode(encoding="utf-16",
    >> errors="strict")).hexdigest()
    >>
    >> '5da8f084e4da17f9441beccf2fa8b437'
    >>
    >> czyli trzeba jawnie skonwertować tekst unicode do takiego formatu, z
    >> jakiego chcemy liczyć md5
    >
    > A jaki jest domyślny format, gdy zmienną utworzyłem tak:
    >
    >>>> ustr = u"Jeszcze dłuższy i bardzo długi string z ółęść oraz ;%$#@[ i innymi
    znakami 0099786764553 na końcu"
    >>>> type(ustr)
    > <type 'unicode'>
    >
    > To jest utf-8? 16? 32?
    >
    String na wejściu jest wg kodowania ustawionego na konsoli lub w pliku
    (często jest to utf-8, w pythonie 3 pliki źródłowe domyślnie są czytane
    jako utf-8, w 2.x trzeba to było zadeklarować na początku pliku)
    konwertowany do wewnętrznej reprezentacji.

    String unicode w pythonie potrafi reprezentować wszystkie znaki
    standardu unicode (chyba), ale nie wiemy (nie potrzebujemy wiedzieć) w
    jakim formacie jest trzymany w pamięci (czy jako liczba 32 bitowa w
    wersji 32bit, a 64 bitowa na procesorach 64 bit, czy jakiś inny obiekt).

    Jeśli potrzebujemy konwersji na ciąg w określonym formacie, musimy to
    jawnie przekodować na ciąg bajtów, np.:
    >>> ustr.encode(encoding="utf-32", errors="strict")
    '\xff\xfe\x00\x00J\x00\x00\x00e\x00\x00\x00s\x00\x00
    \x00z\x00\x00\x00c\x00\x00\x00z\x00\x00\x00e\x00\x00
    \x00
    \x00\x00\x00d\x00\x00\x00B\x01\x00\x00u\x00\x00\x00|
    \x01\x00\x00s\x00\x00\x00z\x00\x00\x00y\x00\x00\x00
    \x00\x00\x00i\x00\x00\x00
    \x00\x00\x00b\x00\x00\x00a\x00\x00\x00r\x00\x00\x00d
    \x00\x00\x00z\x00\x00\x00o\x00\x00\x00
    \x00\x00\x00d\x00\x00\x00B\x01\x00\x00u\x00\x00\x00g
    \x00\x00\x00i\x00\x00\x00
    \x00\x00\x00s\x00\x00\x00t\x00\x00\x00r\x00\x00\x00i
    \x00\x00\x00n\x00\x00\x00g\x00\x00\x00
    \x00\x00\x00z\x00\x00\x00
    \x00\x00\x00\xf3\x00\x00\x00B\x01\x00\x00\x19\x01\x0
    0\x00[\x01\x00\x00\x07\x01\x00\x00
    \x00\x00\x00o\x00\x00\x00r\x00\x00\x00a\x00\x00\x00z
    \x00\x00\x00
    \x00\x00\x00;\x00\x00\x00%\x00\x00\x00$\x00\x00\x00#
    \x00\x00\x00@\x00\x00\x00[\x00\x00\x00
    \x00\x00\x00i\x00\x00\x00
    \x00\x00\x00i\x00\x00\x00n\x00\x00\x00n\x00\x00\x00y
    \x00\x00\x00m\x00\x00\x00i\x00\x00\x00
    \x00\x00\x00z\x00\x00\x00n\x00\x00\x00a\x00\x00\x00k
    \x00\x00\x00a\x00\x00\x00m\x00\x00\x00i\x00\x00\x00
    \x00\x00\x000\x00\x00\x000\x00\x00\x009\x00\x00\x009
    \x00\x00\x007\x00\x00\x008\x00\x00\x006\x00\x00\x007
    \x00\x00\x006\x00\x00\x004\x00\x00\x005\x00\x00\x005
    \x00\x00\x003\x00\x00\x00
    \x00\x00\x00n\x00\x00\x00a\x00\x00\x00
    \x00\x00\x00k\x00\x00\x00o\x00\x00\x00D\x01\x00\x00c
    \x00\x00\x00u\x00\x00\x00'


  • 9. Data: 2016-10-06 12:14:00
    Temat: Re: python i stringi
    Od: Piotr Chamera <p...@p...onet.pl>

    W dniu 2016-10-06 o 10:44, Roman Tyczka pisze:
    > On Thu, 6 Oct 2016 01:32:07 -0700 (PDT), g...@g...com wrote:
    >
    >> W dniu czwartek, 6 października 2016 10:19:26 UTC+2 użytkownik Roman Tyczka
    >>>>>>>> ustr = u"Jeszcze dłuższy i bardzo długi string z ółęść oraz ;%$#@[ i innymi
    znakami 0099786764553 na końcu"
    >>>>>>>> type(ustr)
    >>>>> <type 'unicode'>
    >>>>>>>> hashlib.md5(ustr).hexdigest()
    >>>>> Traceback (most recent call last):
    >>>>> File "<stdin>", line 1, in <module>
    >>>>> UnicodeEncodeError: 'ascii' codec can't encode character u'\u0142' in
    >>>>> position 9: ordinal not in range(128)
    >>>>>
    >>>>> Jak wybrnąć i policzyć jednak tego hasha?
    >>>>>
    >>>>> ps. python 2.7.9 na windows
    >>>>
    >>>> może np. google python unicode to ascii
    >>>
    >>> Po pierwsze nie da się konwertować unicode do ascii.
    >>>
    >>> Poza tym ja nic nie chcę konwertować, chcę by był potraktowany jako
    >>> unicodowy właśnie, czyli de facto dwubajtowy znak.
    >>
    >> to może google python unicode to bytes
    >> python bytes to string
    >> python md5 unicode
    >
    > Jeśli chcesz mi utrzeć nosa tym googlem to ...hmmm, niepotrzebnie. Od
    > googla zacząłem. Ale ok, może grupa dyskusyjna służy tylko do kłótni o
    > pascala.
    > Tak czy owak problem rozwiązałem, nie konwertując do ascii czy tablicy
    > bajtów, ale poprawnie deklarując typ unicodowego stringa. I na taką
    > praktyczną radę liczyłem.

    Dla jasności - nie zadeklarowałeś typu unicodowego stringa, ale za
    pomocą metody (encode) obiektu (ustr, typu unicode) utworzyłeś nowy
    ciąg bajtów reprezentujący ten ciąg znaków w kodowaniu, które podałeś
    jako argument metody. Obiekt pod zmienną ,,ustr" pozostał niezmieniony.

    > Dla potomnych:
    >
    > ustr = u"Jeszcze dłuższy i bardzo długi string z ółęść oraz ;%$#@[ i innymi
    > znakami 0099786764553 na końcu".encode('utf-16le')
    >
    > i ten mały indianin zrobił swoją robotę :-)
    >


  • 10. Data: 2016-10-06 12:32:03
    Temat: Re: python i stringi
    Od: Roman Tyczka <n...@b...no>

    On Thu, 6 Oct 2016 12:14:00 +0200, Piotr Chamera wrote:

    >> Jeśli chcesz mi utrzeć nosa tym googlem to ...hmmm, niepotrzebnie. Od
    >> googla zacząłem. Ale ok, może grupa dyskusyjna służy tylko do kłótni o
    >> pascala.
    >> Tak czy owak problem rozwiązałem, nie konwertując do ascii czy tablicy
    >> bajtów, ale poprawnie deklarując typ unicodowego stringa. I na taką
    >> praktyczną radę liczyłem.
    >
    > Dla jasności - nie zadeklarowałeś typu unicodowego stringa, ale za
    > pomocą metody (encode) obiektu (ustr, typu unicode) utworzyłeś nowy
    > ciąg bajtów reprezentujący ten ciąg znaków w kodowaniu, które podałeś
    > jako argument metody. Obiekt pod zmienną ,,ustr" pozostał niezmieniony.

    Obiekt został zmieniony, ale nie w sensie adresu/instancji, lecz zmienił
    się jego stan wewnętrzny, czyli tablica bajtów zawierająca łańcuch :-)

    thx za pomoc

    --
    pozdrawiam
    Roman Tyczka

strony : [ 1 ] . 2


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: