Search code examples
pythonsimplejson

how to ignore \ in the following code?


>>> import simplejson
>>> data={'s': 1, 'd': {'kwds': {u'"ramana"': {u'"ramana"': [(0L, 7L)]}}}}
>>> print simplejson.dumps(data, ensure_ascii=False)

Then I got like this.

{"s": 1, "d": {"kwds": {"\"ramana\"": {"\"ramana\"": [[0, 7]]}}}}

But I want to get like:

{"s": 1, "d": {"kwds": {""ramana"": {""ramana"": [[0, 7]]}}}}

How to do that?


Solution

  • It is just a representation of data. You can ignore it.

    Why it is represented like that?

    "" means an empty string in Python. So, if you have sentence like this

    Welcome to "SO" Guys
    

    When the computer processes it, it might become

    "Welcome to "SO" Guys"
    

    And it will be treated as two different strings ("Welcome to " and " Guys"). Now, What is SO, here? That's why simplejson escapes the " character with \. But the data is safe,

    Check this example

    data = 'Welcome to "SO" Guys'
    import simplejson
    print simplejson.dumps(data)
    print data
    

    Output

    "Welcome to \"SO\" Guys"
    Welcome to "SO" Guys
    

    And simplejson does that because of JSON's specification

    2.5. Strings

    The representation of strings is similar to conventions used in the C family of programming languages. A string begins and ends with
    quotation marks. All Unicode characters may be placed within the
    quotation marks except for the characters that must be escaped:
    quotation mark, reverse solidus, and the control characters (U+0000
    through U+001F).