Обратные косые черты, добавляемые в мой cookie в Python

Вы не можете создать новую партию, исходящую из блока FluidSelectInput ... Логика отличается тем, что на вход 1 и 2 вы уже получаете 2 разные жидкости ... так почему вы хотите изменить Пакетный цвет в FluidSelectInput, когда вы можете изменить его в источниках, которые идут в FluidSelectInput? FluidSelectInput - это просто путь, он не может изменить характеристики вашей жидкости.

Действия «Новый пакет при вводе» работают для определения новых поступающих партий, а не для создания новых партий на выходе.

Код, который вы используете, верен, но вся логика неверна, поэтому вам нужно переосмыслить свою проблему или задать свой вопрос по-другому. Не забудьте установить свои блоки с помощью «пользовательской партии», чтобы иметь возможность эффективно изменять партию.

Вывод ... что вы хотите использовать, на самом деле вместо этого - FluidMerge ... в этом блоке вы можете контролировать свою выходную партию

7
задан Levi 2 April 2009 в 14:34
поделиться

6 ответов

Как объяснили другие, обратные косые черты выходят из символов двойной кавычки, которые Вы вставляете в значение cookie. (Скрытый) механизм в действии здесь SimpleCookie класс. BaseCookie.output() метод возвращает строковое представление, подходящее, чтобы быть отправленным как HTTP-заголовки. Это вставит символы ESC (обратные косые черты) перед символами двойной кавычки и перед символами обратной косой черты.

print cookie

оператор активируется BaseCookie.output().

На каждом прохождении Ваша строка делает через cookie output() метод, обратные косые черты умножаются (запускающийся с 1-й пары кавычек).

>>> c1=Cookie.SimpleCookie()
>>> c1['name']='A:0'
>>> print c1
Set-Cookie: name="A:0"
>>> c1['name']=r'"A:0"'
>>> print c1
Set-Cookie: name="\"A:0\""
>>> c1['name']=r'"\"A:0\""'
>>> print c1
Set-Cookie: name="\"\\\"A:0\\\"\""
>>> 
3
ответ дан 6 December 2019 в 23:13
поделиться

Я не уверен, но это похоже на регулярный строковый выход Python. Если у Вас будет строка, содержащая обратную косую черту или двойную кавычку, например, то Python будет часто печатать ее в завершенной форме, для создания печатной строки литералом допустимой строки.

Следующий отрывок иллюстрирует:

>>> a='hell\'s bells, \"my\" \\'
>>> a
'hell\'s bells, "my" \\'
>>> print a
hell's bells, "my" \

Не уверенный, если это релевантно, возможно, кто-то с более знаниями проблемной области может вмешаться.

2
ответ дан 6 December 2019 в 23:13
поделиться

Результат наклонных черт выхода из двойных кавычек. По-видимому, в первый раз через, Ваш код видит двойную кавычку и выходит из нее путем добавления обратной косой черты. Затем это читает завершенную обратную косую черту и выходит из обратной косой черты путем предварительного ожидания его с - обратная косая черта. Затем это читает....

Проблема происходит, когда Вы звоните, добавляют.

2
ответ дан 6 December 2019 в 23:13
поделиться

Как другие уже сказали, Вы испытываете строковые проблемы выхода, как только Вы добавляете "и больше" на конец cookie.

До той точки заголовок cookie возвращается из SimpleCookie, не включая кавычки. (Если нет никаких пробелов в значении cookie, то включающие кавычки не нужны.)

# HTTP cookie header with no spaces in value
Set-Cookie: cookie=value

# HTTP cookie header with spaces in value
Set-Cookie: cookie="value with spaces"

Я предложил бы использовать тот же класс SimpleCookie для парсинга заголовка cookie первоначально, сохранив Вас от выполнения его вручную, и также обрабатывающий невыход из строк правильно.

cookies = Cookie.SimpleCookie(os.environ.get('HTTP_COOKIE', ''))
print cookies['critter'].value

править: Это целое соглашение с пробелами не относится к этому вопросу (хотя это может при определенных обстоятельствах прибывать и кусать Вас, когда Вы не ожидаете это.), Но мое предложение для использования SimpleCookie для парсинга все еще стоит.

2
ответ дан 6 December 2019 в 23:13
поделиться

Обратные косые черты используются для "выхода" из символов в строках, которые иначе имели бы особое значение, в действительности лишая их их особого значения. Классический случай является способом, как который можно включать кавычки в заключенные в кавычки строки, такие:

Bob said "Hey!"

который может быть записан как строка этот путь:

"Bob said \"Hey!\""

Конечно, можно хотеть иметь регулярную обратную косую черту там, таким образом, "\" просто означает единственную обратную косую черту.

Править: В ответ на Ваш комментарий к другому ответу (об использовании regexp для удаления наклонных черт) я думаю, что Вы берете неправильный конец палки. Наклонные черты не являются проблемой, они - признак. Проблема состоит в том, что Вы делаете распространения в прямом и обратном направлениях, рассматривающие строки, представляющие заключенные в кавычки строки, как будто они были простыми строками. Вообразите двух друзей, Bob и Sam, разговаривая:

Bob:  Hey!
Sam:  Did you say "Hey!"?
Bob:  Did you say "Did you say \"Hey!\"?"?

Вот почему не показывает вплоть до третьего раза.

1
ответ дан 6 December 2019 в 23:13
поделиться

Другие уже указали, что это - результат Escape обратной косой черты кавычек и обратных косых черт. Я просто хотел указать, что при рассмотрении тщательно структуры вывода, Вы цитируете, Вы видите, как структура создается здесь.

Значение cookie, от которого Вы добираетесь SimpleCookie перенесен в кавычки - (необработанный) cookie имеет, например,

`'[...], critter="value1", [...]'`

После разделения на ', ' и '=', у Вас есть строка, которая содержит "value1". Вы затем добавляете новое значение к той строке, так, чтобы строка содержала "value1":value2.

В следующий раз через, Вы возвращаете ту строку, но с другим набором кавычек, переносящих его - концептуально, ""value1":value2". Но для создания его так, чтобы веб-браузер не видел двух символов кавычки вначале и думал, что это - все, которое существует, внутреннего набора кавычек оставляют, таким образом, это на самом деле возвращается как "\"value1\":value2".

Вы затем добавляете еще один блок, делаете другую передачу назад и вперед между сервером и клиентом, и в следующий раз (потому что тем обратным косым чертам нужно оставленный теперь также), Вы добираетесь "\"\\"value1\\":value2\":value3". И так далее.

Правильное решение, как был уже указан, состоит в том, чтобы позволить SimpleCookie сделайте парсинг вместо того, чтобы нарубить строки сами.

1
ответ дан 6 December 2019 в 23:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: