如何从环境变量中删除自动转义?

时间:2014-10-02 00:34:41

标签: python-3.3

在settings.py中,我从环境中得到var:

ROBOTS_STR = os.environ.get('DJANGO_ROBOTS_STR')

我的env var在文件中设置,如下所示:

DJANGO_ROBOTS_STR=User-agent: *\nDisallow: /admin\nDisallow: /api

问题是在视图中,当我获得settings.ROBOTS_STR时,字符串的值已被自动转义。它是:User-agent: *\\nDisallow: /admin\\nDisallow: /api

如何更改此行为?请注意,我使用的是Python 3.3

2 个答案:

答案 0 :(得分:1)

使用string-escape

对其进行解码
>>> os.environ.get('DJANGO_ROBOTS_STR')
'User-agent: *\\nDisallow: /admin\\nDisallow: /api'
>>> os.environ.get('DJANGO_ROBOTS_STR').decode('string-escape')
'User-agent: *\nDisallow: /admin\nDisallow: /api'
>>> print(os.environ.get('DJANGO_ROBOTS_STR'))
User-agent: *\nDisallow: /admin\nDisallow: /api
>>> print(os.environ.get('DJANGO_ROBOTS_STR').decode('string-escape'))
User-agent: *
Disallow: /admin
Disallow: /api

对于Python 3,首先对其进行编码,然后对其进行解码:

>>> os.environ.get('DJANGO_ROBOTS_STR').encode('latin1').decode('unicode_escape')
'User-agent: *\nDisallow: /admin\nDisallow: /api'

答案 1 :(得分:0)

您可以尝试使用$'xxxxxx'设置env var:

$ export DJANGO_ROBOTS_STR=$'User-agent: *\nDisallow: /admin\nDisallow: /api'

>>> import os
>>> os.environ.get('DJANGO_ROBOTS_STR')
'User-agent: *\nDisallow: /admin\nDisallow: /api'
>>> print os.environ.get('DJANGO_ROBOTS_STR')
User-agent: *
Disallow: /admin
Disallow: /api