Python 3.x Python3-将嵌套列表转换为可读的字符串或表

Python 3.x Python3-将嵌套列表转换为可读的字符串或表,python-3.x,Python 3.x,我写了一个Python3脚本来发送测试电子邮件并记录细节。这些详细信息记录在嵌套列表中 现在我想将这个嵌套列表转换成可读的格式,并将其附加到另一封发给我自己的电子邮件上 我有这个可以打印到我的本地屏幕上: for item in sentmail: print( "|",item[0]," "*(8-len(item[0])), "|",item[1]," "*(20-len(item[1])), "|",item[2]," "*(

我写了一个Python3脚本来发送测试电子邮件并记录细节。这些详细信息记录在嵌套列表中

现在我想将这个嵌套列表转换成可读的格式,并将其附加到另一封发给我自己的电子邮件上

我有这个可以打印到我的本地屏幕上:

        for item in sentmail:
        print( "|",item[0]," "*(8-len(item[0])),
        "|",item[1]," "*(20-len(item[1])),
        "|",item[2]," "*(30-len(item[2])),
        "|",item[3])
哪些产出:

emails sent during this session
| Time      | Subject              | To                     | From
| 09:20:06  | email - subject      | recipient              | sender
| 09:20:06  | email - subject      | recipient              | sender
| 09:20:06  | email - subject      | recipient              | sender
我想捕捉一些类似的东西,可以称为字符串变量,这样我就可以在这样的电子邮件中使用它

msg = MIMEText('this is the text that goes in the body of the email' + logs_table + 'added as a variable')
log_表定义在脚本顶部,带有

log_table = ""
用于填充变量的函数当前为:

def Log_table(sentmail):
    for item in sentmail:
        log_table += "|"+item[0]+" "*(8-len(item[0]))+"|"+item[1]+" "*(20-len(item[1]))+"|"+item[2]+" "*(30-len(item[2]))+"|"+item[3]
发送日志电子邮件的功能是:

def Logs_email(recipient, log_table):
with open('emailTXTFile.txt', 'r') as emailTXTFile:
    EmailMSGTXT = emailTXTFile.read()

#build the email
msg = MIMEText('this is the email content' + log_table)
msg['To'] = email.utils.formataddr(('Recipient', recipient))
msg['From'] = email.utils.formataddr(('sender', 'sender'))
msg['Subject'] = 'logs for ' + client
msg['Date'] = email.header.Header( email.utils.formatdate() )
msg['Message-ID'] = email.header.Header( email.utils.make_msgid() )

#log the sent email
timestamp = datetime.now().strftime("%H:%M:%S")
mail_info = [timestamp, 'session logs', recipient, test_address ]
sentmail.append(mail_info)
server.sendmail(test_address, recipient, msg.as_string())
感谢您的指点和建议,提前谢谢


我尝试了我所拥有和理解的不同变体,但在循环中遇到语法错误,或者变量不包含该值。我还尝试将该代码作为函数或与主代码保持一致。

将该表添加到变量

消息= 对于sentmail中的项目: 消息+=|+项[0]+*8-项[0]+ |+项目[1]+*20项目[1]+ |+项目[2]+*30项目[2]+ |+项目[3] msg=MIMEText'这是作为变量添加到电子邮件'+message+'正文中的文本'
获取消息以保留值时出现问题。它运行但不保留值。将显示我是如何输入它的,你说保留值是什么意思?一旦脚本结束,该值将丢失,因为我已经在更多代码中添加了更多上下文。起初我缺少+s,只是用变量替换了print。最后,我有一个printlog_表来查看字符串的外观,但它不会打印任何内容,所以我假设字符串为空。当前错误是:此会话期间发送的电子邮件回溯最近一次调用:File./script.py,第197行,在Log_tablementmail文件中。/script.py,第56行,在Log_表中Log_table+=|+项[0]+*8-lenitem[0]+|+item[1]+*20-lenitem[1]+|+item[2]+*30-lenitem[2]+|+item[3]UnboundLocalError:赋值前引用的局部变量“log_table”已解决:将Jammy Dodger的解决方案移动到格式化日志的每个函数中,并且该解决了问题。我最初尝试创建变量时缺少+符号。局部重置变量而不是全局更新变量解决了缺少值的问题