如何将字符串包含列表转换为python中的常规列表?

时间:2019-01-10 08:06:33

标签: python

我在Apache Airflow中具有以下功能:

from airflow.utils.email import send_email
send_email(to=['a@mail.com','b@mail.com'],
           subject=....)

这很好用。

现在,我不想对电子邮件列表进行硬编码,因此我将其另存为用户可以从其UI更改的可配置字段。 documentation

所以我将代码更改为:

NOTIFY_LIST = Variable.get("a_emails")
send_email([NOTIFY_LIST],
           subject=....)

但这不起作用。

当我这样做时:

logging.info(NOTIFY_LIST)
logging.info([NOTIFY_LIST])
logging.info(NOTIFY_LIST.split(','))

我知道:

'a@mail.com', 'b@mail.com'
[u"'a@mail.com', 'b@mail.com'"]
[u"'a@mail.com'", u" 'b@mail.com'"]

所以我的问题是:

['a@mail.com','b@mail.com']

[NOTIFY_LIST]

不一样。

我该如何解决?我尝试了所有可以想到的转换。

2 个答案:

答案 0 :(得分:1)

建议尝试以下方法;

logging.info(NOTIFY_LIST.replace("'", "").split(','))

这里的问题是列表中的元素包含引号。

答案 1 :(得分:0)

如果字符串中间有一个 ',另一个答案将失败,我将使用 str.strip 来解决这个问题:

logging.info([s.strip("' ") for s in NOTIFY_LIST.split(',')])