🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.python
19 messages
19 total messages Started by Przemysław Biel Thu, 05 Dec 2002 16:39
Jak zapisać wartości z pliku do słownika ?
#212
Author: Przemysław Biel
Date: Thu, 05 Dec 2002 16:39
9 lines
1144 bytes
Mam takie zdanie:
Plik tekstowy typu:
klucz#wartość

Chcę to zapakować do słownika by potem móc wykonywać na tym operacje.

-- 
            Przemyslaw Biel (StOOdi) stoodi@slackware.eu.org
         *->> GG: 1212973 JID:stoodi@jabber.sk RLU: 226082 <<-*
Re: Jak zapisać wartości z pliku do słownika ?
#213
Author: Adam Karpierz
Date: Thu, 05 Dec 2002 16:58
19 lines
1439 bytes
Użytkownik "Przemysław Biel" <stoodi@wp.pl> napisał:
> Mam takie zdanie:
> Plik tekstowy typu:
> klucz#wartość
>
> Chcę to zapakować do słownika by potem móc wykonywać na tym operacje.

dic = {}
istream = open('nazwa_pliku', 'rb')
try:
    for line in istream.readlines():
        key, value = line.split(sep='#', maxsplit=1)
        dic[key] = value
finally:
    isteam.close()

--
Adam Karpierz
karpierz@zope.pl
Re: Jak zapisać wartości z pliku do słownika ?
#214
Author: Adam Karpierz
Date: Thu, 05 Dec 2002 17:04
25 lines
1452 bytes
Użytkownik "Adam Karpierz" <karpierz@_NOSPAM_alpha.pl> napisał:

> > Mam takie zdanie:

Jeszcze jedno:
Zdecydowanie jednak zrob to jednorazowo
wykorzystujac shelve.
Potem bedzie Ci prosciej bo shelve to po
po prostu trwaly slownik
Wystaczy zmienic w tym co podalem poprzednio

dict = {}

na:

 import shelve

dict = shelve.open('nazwa_zbioru_slownika')

reszta identycznie i na koncu

dict.close()

--
Adam Karpierz
Re: Jak zapisać wartości z pliku do słownika ?
#219
Author: Jacek Konieczny
Date: Thu, 05 Dec 2002 17:15
12 lines
1226 bytes
In article <20021205173942.4f66e5c5.stoodi@wp.pl>, Przemysław Biel wrote:
> Mam takie zdanie:
> Plik tekstowy typu:
> klucz#wartość
> 
> Chcę to zapakować do słownika by potem móc wykonywać na tym operacje.

Da się to zrobić jedną linijką. To będzie chyba jakoś tak:
d=dict([(key,value)=line.split("#",1) for line in file("plik").xreadlines()])

Pozdrowienia,
        Jacek
Re: Jak zapisać wartości z pliku do słownika ?
#215
Author: Przemysław Biel
Date: Thu, 05 Dec 2002 17:23
13 lines
1269 bytes
On Thu, 5 Dec 2002 17:58:22 +0100
"Adam Karpierz" <karpierz@_NOSPAM_alpha.pl> wrote:



>         dic[key] = value

O to chodziło :D 
Dzięki, właśnie piszę pierwszy skrypt w Pythonie :D

-- 
            Przemyslaw Biel (StOOdi) stoodi@slackware.eu.org
         *->> GG: 1212973 JID:stoodi@jabber.sk RLU: 226082 <<-*
Re: Jak zapisać wartości z pliku do słownika ?
#220
Author: Adam Karpierz
Date: Thu, 05 Dec 2002 17:28
20 lines
1546 bytes
Użytkownik "Jacek Konieczny" <jajcus@bnet.pl> napisał:

> Da się to zrobić jedną linijką. To będzie chyba jakoś tak:
> d=dict([(key,value)=line.split("#",1) for line in
file("plik").xreadlines()])

Zdecydowanie nie polecam :)
To grupa o Pythonie a nie o Perlu ;)

Natomiast napewno warto polecic comprehension list zamiast
map(.. itp.

Takze mozna prosciej i naturalniej
i to zdecydowanie polecam:

istream = file('nazwa_zbioru', 'rb')
for line in istream:

--
Adam Karpierz
Re: Jak zapisać wartości z pliku do słownika ?
#221
Author: piter
Date: Thu, 05 Dec 2002 18:06
39 lines
2178 bytes
Uzytkownik "Adam Karpierz" <karpierz@_NOSPAM_alpha.pl> napisal w wiadomosci
news:aso2e3$h76$1@news.tpi.pl...
> Użytkownik "Jacek Konieczny" <jajcus@bnet.pl> napisał:
>
> > Da się to zrobić jedną linijką. To będzie chyba jakoś tak:
> > d=dict([(key,value)=line.split("#",1) for line in
> file("plik").xreadlines()])
>
> Zdecydowanie nie polecam :)
zdecydowanie popieram.

> To grupa o Pythonie a nie o Perlu ;)
dokladnie. ostatnio jestem czytaczem grupy pl.comp.lang.perl i okolo 90%
nowych postow jest na temat tzw golf'a czyli jak napisac algorytm za pomoca
najmniejszej liczby znaczkow (czytaj najbardziej zagmatwany i
niezrozumialy).
skladnia pythona od poczatku byla tak projektowana by *fizycznie* nie dalo
sie pisac tak jak w perlu (czyli za pomoca jakichs hieroglifow)

>
> Natomiast napewno warto polecic comprehension list zamiast
> map(.. itp.
>
> Takze mozna prosciej i naturalniej
> i to zdecydowanie polecam:
>
> istream = file('nazwa_zbioru', 'rb')
> for line in istream:
ale to trza miec 2.2, nieprawdaz?
ja mam jeszcze 2.1 ;-(

>
> --
> Adam Karpierz
>
>
>
>
Re: Jak zapisać wartości z pliku do słownika ?
#217
Author: Przemysław Biel
Date: Thu, 05 Dec 2002 18:14
13 lines
1421 bytes
On Thu, 5 Dec 2002 18:41:29 +0100
"Adam Karpierz" <karpierz@_NOSPAM_alpha.pl> wrote:


> Witaj w 'sekcie' !
> Niedlugo bedziesz gotow oddac majatek za ten jezyk :)

heh, przesiadam się z Perl'a więc na początku jest troszku dziwnie
ale ogólnie wygląda wszystko bardziej przejrzyście :D

-- 
            Przemyslaw Biel (StOOdi) stoodi@slackware.eu.org
         *->> GG: 1212973 JID:stoodi@jabber.sk RLU: 226082 <<-*
Re: Jak zapisać wartości z pliku do słownika ?
#222
Author: Adam Karpierz
Date: Thu, 05 Dec 2002 18:38
14 lines
1455 bytes
Użytkownik "piter" <tojopiter@yahoo.com> napisał:

> > istream = file('nazwa_zbioru', 'rb')
> > for line in istream:
> ale to trza miec 2.2, nieprawdaz?
> ja mam jeszcze 2.1 ;-(

O czesc Slazoku :) Mosz juz robota ?
Nie Piotrek, w 2.1 tez juz bylo
W ogole sie lepiej przestawic bo pisza ze od 2.3 xreadlines beda
deprec.. cus tam

Adam Karpierz
karpierz@zope.pl
Re: Jak zapisać wartości z pliku do słownika ?
#225
Author: Jacek Konieczny
Date: Thu, 05 Dec 2002 18:41
34 lines
2451 bytes
In article <aso628$bpl$1@news.tpi.pl>, piter wrote:
> Uzytkownik "Adam Karpierz" <karpierz@_NOSPAM_alpha.pl> napisal w wiadomosci
> news:aso2e3$h76$1@news.tpi.pl...
>> Użytkownik "Jacek Konieczny" <jajcus@bnet.pl> napisał:
>>
>> > Da się to zrobić jedną linijką. To będzie chyba jakoś tak:
>> > d=dict([(key,value)=line.split("#",1) for line in
>> file("plik").xreadlines()])
>>
>> Zdecydowanie nie polecam :)
> zdecydowanie popieram.
> 
>> To grupa o Pythonie a nie o Perlu ;)
>
> skladnia pythona od poczatku byla tak projektowana by *fizycznie* nie dalo
> sie pisac tak jak w perlu (czyli za pomoca jakichs hieroglifow)
Właśnie dlatego programuję w pythonie, a nie w perlu, bo program w
pythonie jest czytelniejszy. To co podałem to była ciekawostka, ale
jednocześnie przykład jak można zwięźle w pythonie coś zapisać. Nikogo 
nie namawiam do stosowania takich konstrukcji, szczególnie gdy nie są
one dla niego (i/lub jego współpracowników) czytelne.
Dla mnie taki zapis czasem jest czytelniejszy niż kilkulinijkowa pętla,
a także czytelniejszy niż hieroglify perlowe.

Zapisałem to o co pytano --- wczytanie pliku jako słownik --- jedna
operacja -> jedna instrukcja. Dla mnie to jest logiczne.

Z tego co się orientuję, to mniej-więcej tak się pisze w językach funkcyjnych,
które podobno są bardzo czytelne. Mogę się jednak mylić, bo nie całkiem
załapałem ideę programowania funkcyjnego (i wcale mi do tego nie
śpieszno).

Pozdrowienia,
        Jacek
Re: Jak zapisać wartości z pliku do słownika ?
#229
Author: Adam Karpierz
Date: Thu, 05 Dec 2002 19:17
23 lines
1621 bytes
Użytkownik "Adam Karpierz" <karpierz@_NOSPAM_alpha.pl> napisał:

> istream = file('nazwa_zbioru', 'rb')
> for line in istream:

Oczywiscie 'byka walnalem' a wy nie grzmicie ! :).

Mam byc.
 istream = file('nazwa_zbioru', 'rt')

Dla 'rb' bledu nie bedzie ale dostaniemy
raz '\r\n\' raz '\n' a raz '\r' w zaleznosci od platformy

Trzeba jeszcze z line wyciac konczace '\n'.
Ale nie w ten sposob: line = line[:-1]
bo w ostatniej linii moze '\n' nie byc
tylko np
line = line.split('\n')
czy jakos madrzej

--
Adam Karpierz
karpierz@zope.pl
Re: Jak zapisać wartości z pliku do słownika ?
#224
Author: piter
Date: Thu, 05 Dec 2002 20:04
45 lines
2274 bytes
----- Original Message -----
From: "Adam Karpierz" <karpierz@_NOSPAM_alpha.pl>
Newsgroups: pl.comp.lang.python
Sent: Thursday, December 05, 2002 7:38 PM
Subject: Re: Jak zapisać wartości z pliku do słownika ?


> Użytkownik "piter" <tojopiter@yahoo.com> napisał:
>
> > > istream = file('nazwa_zbioru', 'rb')
> > > for line in istream:
> > ale to trza miec 2.2, nieprawdaz?
> > ja mam jeszcze 2.1 ;-(
>
> O czesc Slazoku :) Mosz juz robota ?
jeszcze nie ;-(

> Nie Piotrek, w 2.1 tez juz bylo
niezupelnie Adam, dopiero w 2.2 file object jest iteratorem i dlatego mozesz
go uzywac w: for line in fileObject

ActivePython 2.1.1, build 212 (ActiveState)
Python 2.1.1 (#20, Jul 26 2001, 11:38:51) [MSC 32 bit (Intel)] on win32
Type "copyright", "credits" or "license" for more information.
>>> h=open("myfile")
>>> for l in h:
...     print l
...
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
TypeError: loop over non-sequence
>>>


> W ogole sie lepiej przestawic bo pisza ze od 2.3 xreadlines beda
> deprec.. cus tam
a calkiem mozliwe

>
> Adam Karpierz
> karpierz@zope.pl
>
>
>
Re: Jak zapisać wartości z pliku do słownika ?
#223
Author: Adam Karpierz
Date: Thu, 05 Dec 2002 20:14
15 lines
1595 bytes
Użytkownik "piter" <tojopiter@yahoo.com> napisał:

> niezupelnie Adam, dopiero w 2.2 file object jest iteratorem i
> dlatego mozesz go uzywac w: for line in fileObject

Nie no jasne :)
Po prostu mam 2 batche: py21.bat i py22.bat
tyle ze w obu to samo bylo do teraz:
@C:\Python22\python %1 %2 %3 %4 %5 %6 %7 %8 %9
:)

PS: Ukazal sie ActiveState2.2.2. Sciagaj

Adam Karpierz
karpierz@zope.pl
Re: Jak zapisać wartości z pliku do słownika ?
#230
Author: Jarek Zgoda
Date: Thu, 05 Dec 2002 20:22
21 lines
1546 bytes
Dnia Thu, 5 Dec 2002 20:17:48 +0100
"Adam Karpierz" <karpierz@_NOSPAM_alpha.pl> pisze:

> Dla 'rb' bledu nie bedzie ale dostaniemy
> raz '\r\n\' raz '\n' a raz '\r' w zaleznosci od platformy
> 
> Trzeba jeszcze z line wyciac konczace '\n'.
> Ale nie w ten sposob: line = line[:-1]
> bo w ostatniej linii moze '\n' nie byc
> tylko np
> line = line.split('\n')
> czy jakos madrzej

line = line.strip()

-- 
~$ rm -f /bin/Laden
I po kłopocie!

-- 
Serwis Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Re: Jak zapisać wartości z pliku do słownika ?
#227
Author: Jarek Zgoda
Date: Thu, 05 Dec 2002 20:24
20 lines
1493 bytes
Dnia Thu, 5 Dec 2002 19:06:44 +0100
"piter" <tojopiter@yahoo.com> pisze:

> > Takze mozna prosciej i naturalniej
> > i to zdecydowanie polecam:
> >
> > istream = file('nazwa_zbioru', 'rb')
> > for line in istream:
> ale to trza miec 2.2, nieprawdaz?
> ja mam jeszcze 2.1 ;-(

Niiiii... Można tak (i to jest synonim)
istream = open('nazwa_zbioru')

-- 
~$ rm -f /bin/Laden
I po kłopocie!

-- 
Serwis Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Re: Jak zapisać wartości z pliku do słownika ?
#226
Author: Daniel Podlejski
Date: Thu, 05 Dec 2002 21:19
14 lines
1721 bytes
Jacek Konieczny napisał:
[...]
:  Właśnie dlatego programuję w pythonie, a nie w perlu, bo program w
:  pythonie jest czytelniejszy.

E tam, w obu da sie pisac ładnie i brzydko. Ja tam zawsze dobieram
narzędzie do zastosowania. Są rzeczy które piszę w Perlu, są takie
które piszę w Pike i są tez w Pythonie, a zdarza się też w PHP.
Pisanie wszystkiego na siłę w jednym języku to IMHO fanatyzm.

-- 
Daniel Podlejski <underley@underley.eu.org>
   ... There's somethin' wrong with the world today
   I don't know what it is ...
Re: Jak zapisać wartości z pliku do słownika ?
#231
Author: Marcin Wojtczuk
Date: Thu, 05 Dec 2002 23:11
8 lines
1379 bytes
Jarek Zgoda claimed:
> line = line.strip()

Zbawco! Dzięki tej sztuczce moje programy utracą wiele zbędnych linii :)
BTW: Pakiet python-docs rządzi :)
-- 
    [ http://www.stringi.com/viper/ ] [ GG 1513591 ]
	All good things come to those who wait
Re: Jak zapisać wartości z pliku do słownika ?
#233
Author: Marcin Wojtczuk
Date: Fri, 06 Dec 2002 06:20
25 lines
1623 bytes
piter claimed:
>> line = line.strip()
> jak chcesz usunac koncowy "\n" || "\r\n" to nie jest to najlepsze wyjscie:
>>>> k="   qqqq   \n"
>>>> k
> '   qqqq   \n'
>>>> k.strip()
> 'qqqq'
> 
> juz bardziej rstrip() ale i ten obcina koncowe spacje:
>>>> k.rstrip()
> '   qqqq'
 
> moze ktos wie cze jest jakas biblioteczna metoda na bezpieczne usuwanie tych
> znaczkow?

#v+
>>> string.center(k.strip(), len(k)-1)
'   qqqq   '
#v-

MSPANC
-- 
    [ http://www.stringi.com/viper/ ] [ GG 1513591 ]
	All good things come to those who wait
Re: Jak zapisać wartości z pliku do słownika ?
#235
Author: Jacek Konieczny
Date: Fri, 06 Dec 2002 08:58
15 lines
1404 bytes
In article <aso2e3$h76$1@news.tpi.pl>, Adam Karpierz wrote:
> Takze mozna prosciej i naturalniej
> i to zdecydowanie polecam:
> 
> istream = file('nazwa_zbioru', 'rb')
> for line in istream:

Dla mnie to nie jest naturalne. Nigdzie tu nie widzę, że plik czytany
jest po linii. Dla mnie "for x in istream" mogłoby równie dobrze
oznaczać czytanie kolejnych bajtów, znaków lub bloków. A jak się napisze
istream.readlines() lub istream.xreadlines(), to od razu wszystko jest
jasne.

Pozdrowienia,
        Jacek
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