Python raw string

181 views
Skip to first unread message

rasp

unread,
Jul 21, 2010, 3:43:35 PM7/21/10
to Пишем на Python лучше
Доброго времени суток.
Есть строка с жсоном внутри, которую нужно пропарсить. Парсим json or
simplesjon-ом. Выкидывает эррор что гдето недопустимый символ
simplejson.decoder.JSONDecodeError: Invalid control character at: line
1 column 3410 (char 3410)

(а именно \r\n ) когда копирую содержимое строки и вставляю в код как
константу с r спереди (obj=r'...json text here...') все работает.
Подскажите, как преобразовать объект, а не константу.

Sergey Schetinin

unread,
Jul 21, 2010, 3:49:41 PM7/21/10
to better-p...@googlegroups.com
Приведите пример кода который не работает, тогда можно будет что-то
сказать. Откуда вообще строка берется?

2010/7/21 rasp <roman.pe...@gmail.com>:

> --
> Группа: http://groups.google.com/group/better-python-ru
> Отписка: better-python-...@googlegroups.com

--
Best Regards,
Sergey Schetinin

http://self.maluke.com/ -- My articles and open-source stuff
http://www.maluke.com/ -- My commercial software and custom development services

rasp

unread,
Jul 21, 2010, 4:12:12 PM7/21/10
to Пишем на Python лучше
Строка берется через апи Гугла.
Код: http://pastebin.com/qrUCcE6y
Эрроры - где подсвечено \r\n
Если написать
json_object=r'{"version":".....
-все работает

Andrey Popp

unread,
Jul 21, 2010, 4:10:40 PM7/21/10
to better-p...@googlegroups.com
Дело в том, что согласно http://json.org, символ перевода строки и
возврата каретки должен быть представлен именно \r\n (и это не
эскейпнутые значения), т.е. это будет
r"\r\n" или "\\r\\n".

>>> import json
>>> json.loads('"\\n") == "\n"
True

2010/7/21 rasp <roman.pe...@gmail.com>:

--
Andrey Popp

phone: +7 911 740 24 91
e-mail: 8ma...@gmail.com

rasp

unread,
Jul 21, 2010, 4:17:37 PM7/21/10
to Пишем на Python лучше
Строку получаю по Гугл апи.
Код: http://pastebin.com/qrUCcE6y
Эрроры - где внизу подсвечено \r\n
Если написать
json_object=r'{"version":"
-все работает

On 21 июл, 22:49, Sergey Schetinin <mal...@gmail.com> wrote:
> Приведите пример кода который не работает, тогда можно будет что-то
> сказать. Откуда вообще строка берется?
>

> 2010/7/21 rasp <roman.peregonc...@gmail.com>:


>
> > Доброго времени суток.
> > Есть строка с жсоном внутри, которую нужно пропарсить. Парсим json or
> > simplesjon-ом. Выкидывает эррор что гдето недопустимый символ
> > simplejson.decoder.JSONDecodeError: Invalid control character at: line
> > 1 column 3410 (char 3410)
>
> > (а именно \r\n ) когда копирую содержимое строки и вставляю в код как
> > константу с r спереди (obj=r'...json text here...') все работает.
> > Подскажите, как преобразовать объект, а не константу.
>
> > --
> > Группа:http://groups.google.com/group/better-python-ru
> > Отписка: better-python-...@googlegroups.com
>
> --
> Best Regards,
> Sergey Schetinin
>

> http://self.maluke.com/-- My articles and open-source stuffhttp://www.maluke.com/-- My commercial software and custom development services

Sergey Schetinin

unread,
Jul 21, 2010, 4:24:42 PM7/21/10
to better-p...@googlegroups.com
Я так думаю что строка получена в браузере и скопирована в исходный
код. Так делать не нужно. Или если делать, то использовать raw string,
тогда будет работать, что мы и видим.

Если бы данные по-честному подгружались в самом скрипте, то проблемы
бы не было, так что вопрос "как преобразовать объект, а не константу"
на самом деле не стоит.

2010/7/21 rasp <roman.pe...@gmail.com>:

http://self.maluke.com/ -- My articles and open-source stuff
http://www.maluke.com/ -- My commercial software and custom development services

rasp

unread,
Jul 21, 2010, 4:21:53 PM7/21/10
to Пишем на Python лучше
Спасибо..но что мне делать? Парсить код на \r\n и добавлять \ ? или
есть более элегантный способ?

On 21 июл, 23:10, Andrey Popp <8may...@gmail.com> wrote:
> Дело в том, что согласноhttp://json.org, символ перевода строки и


> возврата каретки должен быть представлен именно \r\n (и это не
> эскейпнутые значения), т.е. это будет
> r"\r\n" или "\\r\\n".
>
> >>> import json
> >>> json.loads('"\\n") == "\n"
>
> True
>

> 2010/7/21 rasp <roman.peregonc...@gmail.com>:


>
> > Доброго времени суток.
> > Есть строка с жсоном внутри, которую нужно пропарсить. Парсим json or
> > simplesjon-ом. Выкидывает эррор что гдето недопустимый символ
> > simplejson.decoder.JSONDecodeError: Invalid control character at: line
> > 1 column 3410 (char 3410)
>
> > (а именно \r\n ) когда копирую содержимое строки и вставляю в код как
> > константу с r спереди (obj=r'...json text here...') все работает.
> > Подскажите, как преобразовать объект, а не константу.
>
> > --
> > Группа:http://groups.google.com/group/better-python-ru
> > Отписка: better-python-...@googlegroups.com
>
> --
> Andrey Popp
>
> phone: +7 911 740 24 91

> e-mail: 8may...@gmail.com

rasp

unread,
Jul 21, 2010, 4:28:38 PM7/21/10
to Пишем на Python лучше
И правда...но не из браузера а из консоли) Спасибо!

On 21 июл, 23:24, Sergey Schetinin <mal...@gmail.com> wrote:
> Я так думаю что строка получена в браузере и скопирована в исходный
> код. Так делать не нужно. Или если делать, то использовать raw string,
> тогда будет работать, что мы и видим.
>
> Если бы данные по-честному подгружались в самом скрипте, то проблемы
> бы не было, так что вопрос "как преобразовать объект, а не константу"
> на самом деле не стоит.
>

> 2010/7/21 rasp <roman.peregonc...@gmail.com>:


>
>
>
>
>
>
>
> > Строку получаю по Гугл апи.
> > Код:http://pastebin.com/qrUCcE6y
> > Эрроры - где внизу подсвечено \r\n
> > Если написать
> > json_object=r'{"version":"
> > -все работает
>
> > On 21 июл, 22:49, Sergey Schetinin <mal...@gmail.com> wrote:
> >> Приведите пример кода который не работает, тогда можно будет что-то
> >> сказать. Откуда вообще строка берется?
>
> >> 2010/7/21 rasp <roman.peregonc...@gmail.com>:
>
> >> > Доброго времени суток.
> >> > Есть строка с жсоном внутри, которую нужно пропарсить. Парсим json or
> >> > simplesjon-ом. Выкидывает эррор что гдето недопустимый символ
> >> > simplejson.decoder.JSONDecodeError: Invalid control character at: line
> >> > 1 column 3410 (char 3410)
>
> >> > (а именно \r\n ) когда копирую содержимое строки и вставляю в код как
> >> > константу с r спереди (obj=r'...json text here...') все работает.
> >> > Подскажите, как преобразовать объект, а не константу.
>
> >> > --
> >> > Группа:http://groups.google.com/group/better-python-ru
> >> > Отписка: better-python-...@googlegroups.com
>
> >> --
> >> Best Regards,
> >> Sergey Schetinin
>

> >>http://self.maluke.com/--My articles and open-source stuffhttp://www.maluke.com/--My commercial software and custom development services

Sergey Schetinin

unread,
Jul 21, 2010, 4:31:11 PM7/21/10
to better-p...@googlegroups.com
На здоровье.

Если копировать строки из консоли, то лучше копировать вывод не

>>> s = r'\n'
>>> print s
\n

а

>>> s
'\\n'

или

>>> print repr(s)
'\\n'


2010/7/21 rasp <roman.pe...@gmail.com>:

http://self.maluke.com/ -- My articles and open-source stuff
http://www.maluke.com/ -- My commercial software and custom development services

Reply all
Reply to author
Forward
0 new messages