У меня нет доступа ни к DigitalOcean Spaces, ни к Amazon S3, поэтому воспринимайте это как отправную точку. Рассматривая документацию API для DigitalOcean Spaces (где пример для Python) и код Scrapy для FilesPipeline
(на котором основан ImagesPipeline
), я бы сказал, что вы также необходимо настроить по крайней мере AWS_ENDPOINT_URL
в settings.py
, возможно, также другие AWS_*
опции.
На самом деле использование строковых функций XPath является правильным способом сделать это. Все необходимо удостовериться, - то, что Вы тестируете на разделители также:
contains(concat(',' $list, ','), concat(',', $value, ','))
возвратил бы булево значение. Или Вы могли бы использовать один из них:
substring-before(concat('|,' $list, ',|'), concat(',', $value, ','))
или
substring-after(concat('|,' $list, ',|'), concat(',', $value, ','))
Если Вы получаете пустую строку как результат, $value
не находится в списке.
Править:
Комментарий @Dimitre корректен: substring-before()
(или substring-after()
) также возвратил бы пустую строку, если найденная строка является первой (или последней) в списке. Избегать, чтобы, я добавил что-то в запуске и конце списка. Все еще contains()
рекомендуемый способ сделать это.
В дополнение к решению XPath 1.0, обеспеченному Tomalak,
Используя XPath 2.0 можно маркировать список значений:
exists(tokenize($list, ',')[. = $value])
оценивает к true()
если и только если $value
содержится в списке значений $list