destroooooy <[EMAIL PROTECTED]> writes: > Hi folks, > I'm finding some (what I consider) curious behavior with the string > methods and the forward slash character. I'm writing a program to > rename mp3 files based on their id3 tags, and I want to protect > against goofy characters in the in tags. So I do the following: > > unsafe_chars = "/#()[EMAIL PROTECTED]&*{}\'\"`?<>| \t\n" > alt_chars = "_________________________" > > s_artist.translate(maketranstable(unsafe_chars, alt_chars)) > > > which successfully replaces everything except for forward slashes (at > least in the files I've tested so far). If I use the "replace()" > method, it also does not work. Escaping the forward slash changes > nothing. "find()" however, works, and thus I've resorted to: > > if "/" in s_artist: > (s_l, slash, s_r) = s_artist.partition("/") > s_artist = "_".join([s_l, s_r]) > > which is rather uncool. It works but I'd just like to know what the > deal is. TIA.
It works fine here: marigold:junk arno$ python Python 2.5.1 (r251:54863, Jan 17 2008, 19:35:17) [GCC 4.0.1 (Apple Inc. build 5465)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> unsafe_chars = "/#()[EMAIL PROTECTED]&*{}\'\"`?<>| \t\n" >>> table = range(256) >>> for c in unsafe_chars: table[ord(c)] = ord('_') ... >>> table = ''.join(chr(o) for o in table) >>> 'Jon(&Mark/Steve)'.translate(table) 'Jon__Mark_Steve_' >>> -- Arnaud -- http://mail.python.org/mailman/listinfo/python-list