Как мы можем разбить значение, получение ERROR - должно быть str, а не list - PullRequest
0 голосов
/ 25 мая 2020

Я новичок в python, здесь хочу разбить значение по запятой. Я пробовал использовать метод разделения, но он не работает.

Пожалуйста, обратитесь к приведенному ниже коду

report_name = task_instance.xcom_pull(task_ids='task_1', key='report_key')
print('type report name : ',type(report_name))
##INFO - type report name :  <class 'str'>
print('report name in email op : ',report_name)        
##INFO - report name in email op :  
print('str report name : ',str(report_name))    
##INFO - str report name :  report_1,report_2,report_3
t_email_success = email_operator.EmailOperator(
                task_id='t_email_success',
                to=str(user_email),
                cc='abc@sample.com'
                subject='This is sample of subject',
                html_content="""Hello,<br><br>

                                Report is generated successfully <br><br>
                                File Names : """ + str(report_name).split(",") + """<br><br>



                                Thanks & Regards,<br><br>
                                """
            )
t_email_success.execute(context=kwargs) 

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

Мой ожидаемый результат:

Hello,

Report is generated successfully 

File Names : report_1
report_2
report_3

Thanks & Regards

Любое предложение приветствуется.

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 26 мая 2020

Другой ответ в порядке, но я бы сделал это немного иначе:

report_name = task_instance.xcom_pull(task_ids='task_1', key='report_key')
print('report name in email op : ',report_name)        
template="""Hello,<br><br>
Report is generated successfully <br><br>
File Names : {}<br><br>
Thanks & Regards,<br><br>
"""
t_email_success = email_operator.EmailOperator(
                task_id='t_email_success',
                to=user_email,
                cc='abc@sample.com',
                subject='This is sample of subject',
                html_content=template.format('<br>'.join(report_name.split(',')))
            )
t_email_success.execute(context=kwargs) 
1 голос
/ 26 мая 2020

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

report_name - это строка, разделение на которую преобразует ее в список. Чего вы пытаетесь достичь?

Если вы хотите, чтобы после каждого имени файла были новые строки, вы можете сделать:

        html_content="""Hello,<br><br>

                        Report is generated successfully <br><br>
                        File Names : """ + report_name.replace(",","<br>") + """<br><br>



                        Thanks & Regards,<br><br>
                        """

Но дополнительные имена файлов могут иметь неправильный отступ, может быть, лучше добавить <br> также после ::)

...