Thread View: pl.comp.lang.python
10 messages
10 total messages
Started by didi
Thu, 02 Jul 2009 09:28
Pliki tekstowe - różne kodowanie
Author: didi
Date: Thu, 02 Jul 2009 09:28
Date: Thu, 02 Jul 2009 09:28
36 lines
2178 bytes
2178 bytes
witam
mam kilkaset plików tekstowych, które muszę połączyć w jeden plik, usuwając
wcześniej określone linie i dokonując zmian w poszczególnych polach w
tekście (taka forma tekstowej bazy danych).
Na początku zająłem się usuwaniem samych linii:
outfile=open("name.txt",'w')
for file in filenames:
text=open(file)
lines=text.readlines()
outfile.writelines(lines[3:]) #zapisz wszystkie linie począwszy od
3-ciej
text.close
outfile.close
I problem jaki napotkałem to UnicodeDecodeError: 'charmap' codec can't
decode byte ... in position ...:character mapt to <undifined>
czyli wg mnie w jednym z plików pojawiło się inne kodowanie niż standardowe.
Stąd program się wykrzaczył. Nie potrafię określić, jakiego rodzaju
kodowanie pojawi się w plikach wejściowych, nie jest to zależne ode mnie.
Kombinowałem z text=open(file,'rb') a następnie jakiś split('\r\n'), żeby
uzyskać podział na linie i jednocześnie uniezależnić się od kodowania.
Niestety za każdym razem dostawałem komunikat o braku możliwości użycia
funkcji operujących na stringu na buforze API.
Jakaś podpowiedź koledzy?
--
didi
Re: Pliki tekstowe - różne kodowanie
Author: Daniel Mróz
Date: Thu, 02 Jul 2009 10:02
Date: Thu, 02 Jul 2009 10:02
19 lines
1623 bytes
1623 bytes
On 02.07.2009, didi <didi@didi.com> wrote: > Stąd program się wykrzaczył. Nie potrafię określić, jakiego rodzaju > kodowanie pojawi się w plikach wejściowych, nie jest to zależne ode mnie. Jeśli kodowania mogą być różne, to być może to Ci pomoże: http://chardet.feedparser.org/ Nie wiem czy działa na plikach tekstowych (bez jawnej definicji kodowania), ale warto sprawdzić. Pozdrawiam Beorn -- Daniel 'Beorn' Mróz <beorn@alpha.pl> http://127.0.0.1/beorn [GIT d s:- a-@ C++++ UL++++$ P+ L++++ E--- W+ N+++ o? K- w---] [O- M- V! PS+ PE++ Y+ PGP++ t- 5 X R !tv b+ DI D++ G++ e h*] [ r++ y+ ]
Re: Pliki tekstowe - różne kodowanie
Author: didi
Date: Thu, 02 Jul 2009 12:00
Date: Thu, 02 Jul 2009 12:00
22 lines
1873 bytes
1873 bytes
Użytkownik "Daniel Mróz" <beorn@alpha.pl> napisał w wiadomości news:slrnh4p1jg.9kl.beorn@pino.cyberdeck.pl... > On 02.07.2009, didi <didi@didi.com> wrote: >> Stąd program się wykrzaczył. Nie potrafię określić, jakiego rodzaju >> kodowanie pojawi się w plikach wejściowych, nie jest to zależne ode mnie. > Jeśli kodowania mogą być różne, to być może to Ci pomoże: > > http://chardet.feedparser.org/ > > Nie wiem czy działa na plikach tekstowych (bez jawnej definicji > kodowania), > ale warto sprawdzić. > Poradziłem sobie w inny sposób. Zamiast użyć wersji 3xx użyłem wersji 2xx. Otóż wersja 2xx nie czuje potrzeby konwertowania do unicode wszystkiego, co napotka. Niemniej dzięki za info.s -- didi
Re: Pliki tekstowe - różne kodowanie
Author: William Bonawentura
Date: Thu, 02 Jul 2009 13:16
Date: Thu, 02 Jul 2009 13:16
8 lines
1372 bytes
1372 bytes
> > Poradziłem sobie w inny sposób. Zamiast użyć wersji 3xx użyłem wersji 2xx. > Otóż wersja 2xx nie czuje potrzeby konwertowania do unicode wszystkiego, > co napotka. Niemniej dzięki za info.s > Skoro nie robiłes przekodowań to IMHO masz teraz plik z danymi, wktórych rekordy są w różnych formatach kodowania. Czy ma to jakąś użyteczność ?
Re: Pliki tekstowe - różne kodowanie
Author: didi
Date: Thu, 02 Jul 2009 13:37
Date: Thu, 02 Jul 2009 13:37
18 lines
1844 bytes
1844 bytes
Użytkownik "William Bonawentura" <news@ipartners.pl> napisał w wiadomości news:h2ibs7$1gpd$1@news2.ipartners.pl... > > >> Poradziłem sobie w inny sposób. Zamiast użyć wersji 3xx użyłem wersji >> 2xx. Otóż wersja 2xx nie czuje potrzeby konwertowania do unicode >> wszystkiego, co napotka. Niemniej dzięki za info.s >> > > Skoro nie robiłes przekodowań to IMHO masz teraz plik z danymi, wktórych > rekordy są w różnych formatach kodowania. Czy ma to jakąś użyteczność ? W moim przypadku ma. Pliki są swojego rodzaju tekstową bazą danych i tak naprawdę potrzebowałem pojedyńczych rekordów z poszczególnych linii. -- didi
Re: Pliki tekstowe - różne kodowanie
Author: konryd
Date: Thu, 02 Jul 2009 15:30
Date: Thu, 02 Jul 2009 15:30
4 lines
1475 bytes
1475 bytes
Jeśli się nie mylę, w Pythonie 3 podajesz encoding pliku przy otwieraniu go. Konrad
Re: Pliki tekstowe - różne kodowanie
Author: Rob Wolfe
Date: Thu, 02 Jul 2009 20:22
Date: Thu, 02 Jul 2009 20:22
37 lines
2061 bytes
2061 bytes
"didi" <didi@didi.com> writes:
> Kombinowałem z text=open(file,'rb') a następnie jakiś split('\r\n'),
> żeby uzyskać podział na linie i jednocześnie uniezależnić się od
> kodowania. Niestety za każdym razem dostawałem komunikat o braku
> możliwości użycia funkcji operujących na stringu na buforze API.
>
> Jakaś podpowiedź koledzy?
Tak tylko dorzucę dla potomnych, bo można po tym wątku odnieść wrażenie,
że Python 3.x jest jakiś ułomny czy coś.
Po pierwsze prawdą jest, że nie da się używać Pythona 3.x bez czytania
dokumentacji dotyczącej Pythona 3.x:
http://docs.python.org/3.1/library/functions.html#open
Jeden rzut oka i widzimy w funkcji `open` zbawienny parametr `errors`.
Po drugie sporo się zmieniło jeśli chodzi o stringi:
http://docs.python.org/3.1/whatsnew/3.0.html#text-vs-data-instead-of-unicode-vs-8-bit
Tak, to nie ma prawa teraz działać:
>>> b"abc\r\ndef".split("\r\n")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: Type str doesn't support the buffer API
natomiast to działa jak najbardziej:
>>> b"abc\r\ndef".split(b"\r\n")
[b'abc', b'def']
http://docs.python.org/3.1/library/stdtypes.html#bytes-methods
RW
Re: Pliki tekstowe - różne kodowanie
Author: didi
Date: Fri, 03 Jul 2009 06:33
Date: Fri, 03 Jul 2009 06:33
24 lines
2007 bytes
2007 bytes
Użytkownik "Rob Wolfe" <rw@smsnet.pl> napisał w wiadomości news:87fxdej0nd.fsf@smsnet.pl... > Tak tylko dorzucę dla potomnych, bo można po tym wątku odnieść wrażenie, > że Python 3.x jest jakiś ułomny czy coś. > Po pierwsze prawdą jest, że nie da się używać Pythona 3.x bez czytania > dokumentacji dotyczącej Pythona 3.x: > > http://docs.python.org/3.1/library/functions.html#open > > Jeden rzut oka i widzimy w funkcji `open` zbawienny parametr `errors`. > Jak dla mnie to struktura tejże dokumentacji i sama wyszukiwarka jest do dupy. Zupełnie nie jest intuicyjna. To był mój pierwszy kontakt z pythonem wymuszony potrzebą chwili i brakiem czasu. Co nie oznacza wcale, że samego pythona uważam za do dupy, bo akurat się sprawdził. -- didi
Re: Pliki tekstowe - różne kodowanie
Author: William Bonawentura
Date: Fri, 03 Jul 2009 10:38
Date: Fri, 03 Jul 2009 10:38
7 lines
1444 bytes
1444 bytes
>Użytkownik "konryd" <konryd@gmail.com> napisał w wiadomości >news:38d6a916-54ef-4398-88c7-612b82914fba@c9g2000yqm.googlegroups.com... >Jeśli się nie mylę, w Pythonie 3 podajesz encoding pliku przy >otwieraniu go. W Pythonie 2.5 też, korzystając z codecs.open
Re: Pliki tekstowe - różne kodowanie
Author: Artur Lew
Date: Sun, 05 Jul 2009 07:59
Date: Sun, 05 Jul 2009 07:59
14 lines
1504 bytes
1504 bytes
didi wrote: > Jak dla mnie to struktura tejże dokumentacji i sama wyszukiwarka jest do > dupy. Zupełnie nie jest intuicyjna. To był mój pierwszy kontakt z Hmm nie zartuj. Nowa dokumentacja czyta sie jak ksiazka i w przeciwienstwie do belkotu wygenerowanego javadoc-em ma przyklady ;) Mozesz jeszcze sprobowac dokumentacji dostepnej przez wbudowany skrypt pydocgui.pyw. Dzieki czem bedziesz mial aktualna dokumentacje generowana z kodu w przegladarce. -- Pozdrawiam Artur Lew arturdotlewatgmaildotcom
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