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 ?
Author: Przemysław Biel
Date: Thu, 05 Dec 2002 16:39
Date: Thu, 05 Dec 2002 16:39
9 lines
1144 bytes
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 ?
Author: Adam Karpierz
Date: Thu, 05 Dec 2002 16:58
Date: Thu, 05 Dec 2002 16:58
19 lines
1439 bytes
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 ?
Author: Adam Karpierz
Date: Thu, 05 Dec 2002 17:04
Date: Thu, 05 Dec 2002 17:04
25 lines
1452 bytes
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 ?
Author: Jacek Konieczny
Date: Thu, 05 Dec 2002 17:15
Date: Thu, 05 Dec 2002 17:15
12 lines
1226 bytes
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 ?
Author: Przemysław Biel
Date: Thu, 05 Dec 2002 17:23
Date: Thu, 05 Dec 2002 17:23
13 lines
1269 bytes
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 ?
Author: Adam Karpierz
Date: Thu, 05 Dec 2002 17:28
Date: Thu, 05 Dec 2002 17:28
20 lines
1546 bytes
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 ?
Author: piter
Date: Thu, 05 Dec 2002 18:06
Date: Thu, 05 Dec 2002 18:06
39 lines
2178 bytes
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 ?
Author: Przemysław Biel
Date: Thu, 05 Dec 2002 18:14
Date: Thu, 05 Dec 2002 18:14
13 lines
1421 bytes
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 ?
Author: Adam Karpierz
Date: Thu, 05 Dec 2002 18:38
Date: Thu, 05 Dec 2002 18:38
14 lines
1455 bytes
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 ?
Author: Jacek Konieczny
Date: Thu, 05 Dec 2002 18:41
Date: Thu, 05 Dec 2002 18:41
34 lines
2451 bytes
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 ?
Author: Adam Karpierz
Date: Thu, 05 Dec 2002 19:17
Date: Thu, 05 Dec 2002 19:17
23 lines
1621 bytes
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 ?
Author: piter
Date: Thu, 05 Dec 2002 20:04
Date: Thu, 05 Dec 2002 20:04
45 lines
2274 bytes
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 ?
Author: Adam Karpierz
Date: Thu, 05 Dec 2002 20:14
Date: Thu, 05 Dec 2002 20:14
15 lines
1595 bytes
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 ?
Author: Jarek Zgoda
Date: Thu, 05 Dec 2002 20:22
Date: Thu, 05 Dec 2002 20:22
21 lines
1546 bytes
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 ?
Author: Jarek Zgoda
Date: Thu, 05 Dec 2002 20:24
Date: Thu, 05 Dec 2002 20:24
20 lines
1493 bytes
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 ?
Author: Daniel Podlejski
Date: Thu, 05 Dec 2002 21:19
Date: Thu, 05 Dec 2002 21:19
14 lines
1721 bytes
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 ?
Author: Marcin Wojtczuk
Date: Thu, 05 Dec 2002 23:11
Date: Thu, 05 Dec 2002 23:11
8 lines
1379 bytes
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 ?
Author: Marcin Wojtczuk
Date: Fri, 06 Dec 2002 06:20
Date: Fri, 06 Dec 2002 06:20
25 lines
1623 bytes
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 ?
Author: Jacek Konieczny
Date: Fri, 06 Dec 2002 08:58
Date: Fri, 06 Dec 2002 08:58
15 lines
1404 bytes
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