Re: find and remove "\" character from string

Discussion in 'Python' started by Steve Holden, Sep 15, 2007.

  1. Steve Holden

    Steve Holden Guest

    Konstantinos Pachopoulos wrote:
    > Hi,
    > i have the following string s and the following code, which doesn't
    > successfully remove the "\", but sucessfully removes the "\\".
    >
    > >>> s="Sad\\asd\asd"
    > >>> newS=""
    > >>> for i in s:

    > ... if i!="\\":
    > ... newS=newS+i
    > ...
    > >>> newS

    > 'Sadasd\x07sd'
    >

    In actual fact there was just a single backslash in s to start with. If
    you read the documentation carefully at

    http://docs.python.org/ref/strings.html

    (though it's the language reference manual, and therefore not
    necessarily suitable reading for beginners) you will see that the "\\"
    represents a single backslash character and \a represents an ASCII BEL
    character (whose decimal value is 7, and which the interpreter
    represents as the hexadecimal escape string \x07).

    So the characters in s were S a d \ a s d \x07 s d and you shoudl have
    seen len(s) == 10.

    As has already been mentioned, the shortest way to do what you want would be

    newS = s.replace("\\", "")

    > I have also read the following, but i do not understand the "...and the
    > remaining characters have been mapped through the given translation
    > table, which must be a string of length 256". Can some explain?
    >
    > *translate*( table[, deletechars])
    >
    > Return a copy of the string where all characters occurring in the
    > optional argument deletechars are removed, and the remaining
    > characters have been mapped through the given translation table,
    > which must be a string of length 256.
    >
    > For Unicode objects, the translate() method does not accept the
    > optional deletechars argument. Instead, it returns a copy of the s
    > where all characters have been mapped through the given translation
    > table which must be a mapping of Unicode ordinals to Unicode
    > ordinals, Unicode strings or |None|. Unmapped characters are left
    > untouched. Characters mapped to |None| are deleted. Note, a more
    > flexible approach is to create a custom character mapping codec
    > using the codecs <http://docs.python.org/lib/module-codecs.html>
    > module (see encodings.cp1251 for an example).
    >

    The translate() string method uses the numeric represetation of each
    character as an index into the translation table. So a null translation
    table can be constructed using

    >>> t = "".join(chr(i) for i in range(256))
    >>> t

    '\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\
    x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f
    !"#$%&\'()*+,-./0123456789:;<=>?@ABC
    DEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\x80\x81\x82\x83
    \x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97
    \x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab
    \xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf
    \xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3
    \xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7
    \xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb
    \xfc\xfd\xfe\xff'
    >>>


    (the above output will look a little screwy in the mail because of odd
    line wrapping).

    So hopefully you could then achieve the same effect (at vastly greater
    complexity than the first solution) using

    >>> s="Sad\\asd\asd"
    >>> len(s)

    10
    >>> newS = s.translate(t, "\\")
    >>> newS

    'Sadasd\x07sd'
    >>>


    You would probably only want to use that method if you were actually
    translating some of the characters at the same time.

    regards
    Steve
    --
    Steve Holden +1 571 484 6266 +1 800 494 3119
    Holden Web LLC/Ltd http://www.holdenweb.com
    Skype: holdenweb http://del.icio.us/steve.holden

    Sorry, the dog ate my .sigline
    Steve Holden, Sep 15, 2007
    #1
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Toto

    how to remove a character from a string

    Toto, Apr 7, 2004, in forum: C Programming
    Replies:
    18
    Views:
    14,633
    brian
    Apr 10, 2004
  2. Daniel Mark
    Replies:
    6
    Views:
    70,749
    Tim Chase
    Sep 28, 2006
  3. Brand Bogard

    8 bit character string to 16 bit character string

    Brand Bogard, May 25, 2006, in forum: C Programming
    Replies:
    8
    Views:
    734
    those who know me have no need of my name
    May 28, 2006
  4. Konstantinos Pachopoulos

    find and remove "\" character from string

    Konstantinos Pachopoulos, Sep 15, 2007, in forum: Python
    Replies:
    2
    Views:
    427
  5. Bart Vandewoestyne
    Replies:
    8
    Views:
    729
    Bart Vandewoestyne
    Sep 25, 2012
Loading...

Share This Page