[python] trim

Radek Kanovsky rk na dat.cz
Středa Říjen 30 19:12:11 CET 2002


On Wed, Oct 30, 2002 at 06:47:05PM +0100, Dan Holešínský wrote:

> Zdravim vsechny v konfere,
> Mam nasledujici problem: mam binarni soubor (mp3jku) a vytahnu z ni
> poslednich 128 bytu. (ID3tag). Dostanu retezec ve kterem jsou hodnoty
> rozdeleny zhruba :-) nasledovne: dataxxxxdataxxxxx .... pricemz x je znak s
> ascii hodnotou 0 (NUL). Nevedeli byste nekdo jakym zpusobem ocistit data od
> techto znaku? Vyzkousel jsem metody strip() i split() a bez vysledku. Reseni
> je to otevrit v notepadu a ulozit. Pak dojde k prevedeni na znak SPACE.
> Diky moc za kazde tuknuti trochu spravnym smerem.

Nevim, jestli jsem pochopil spravne. Nasledujici kod zameni nuly (ASCII '\0')
za `nic'.

import string
id3tag = 'aaa\0\0\0bbb\0\0\0'
cisty_id3tag = string.replace(id3tag, '\0', '')
vysledek: 'aaabbb'


Pokud by bylo potreba zmenit cely blok nul za neco jineho (treba X), lze to
udelat nasledovne:

import re
id3re = re.compile('\0+')
cisty_id3tag = id3re.sub('X', id3tag)
vysledek: 'aaaXbbbX'


Pokud by napr. bylo potreba rozdelit id3tag na seznam retezcu nenulove delky
neobsahujicich nuly, lze to udelat nasledovne:

import re
id3re = re.compile('\0+')
id3tag_list = filter(lambda x:x, id3re.split(id3tag))
vysledek: ['aaa', 'bbb']


> PS: Pythonu zdar. Programovani v nem je pekna labuz :-))

Tak, tak.

Radek Kaňovský


Další informace o konferenci Python