【问题标题】:How to remove newline items from a list in Python? [duplicate]如何从 Python 列表中删除换行符? [复制]
【发布时间】:2026-01-09 10:35:01
【问题描述】:

我正在从电子邮件正文创建一个列表,输出列表包含数千个 '\n''\t' 字符。我想知道如何从 Python 列表中删除它们。

注意:我希望只删除没有其他值的项目,因为列表中有一些索引包含有价值的信息和最后的特殊字符,我不想删除它们。例如:[..., '\n', 'WDO\n', '\t\t\n', ...]

outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
inbox = outlook.GetDefaultFolder(6) 
messages = inbox.Items
message = messages.GetFirst()

for msg in messages:
    subject = msg.Subject
    if (subject.find('ABCDEFG') != -1):
        assunto = subject
        conteudo = msg.body
        File_object = open(r"C:\Projetos\E-mail\body.txt","w")
        File_object.write(msg.body)
        File_object.close() 
        break

File_object = open(r"C:\Projetos\E-mail\body.txt","r")
lista = File_object.readlines()

这是列表的输出:

lista[0:16]

['Segue dados de hoje. \n',
 '\n',
 '\n',
 '\n',
 ' \n',
 '\n',
 '\n',
 '\n',
 'WDO\n',
 '\n',
 '\n',
 '\n',
 '\t\t\n',
 '\n',
 'Média\n',
 '\n']

【问题讨论】:

  • 你也可以发布预期的输出吗?我假设您只想要Segue dados de hoje.WDOMédia 的列表
  • 到底是什么问题?你有没有尝试过,做过任何研究?

标签: python string


【解决方案1】:

listb = [x for x in lista if (x.strip() != "")]

【讨论】:

  • OP 也想删除' \n',而您的代码只会过滤掉'\n'
  • 你是对的,更新了。
【解决方案2】:

使用isspace 来确定列表元素是否只是空格,例如制表符、换行符等。

[x for x in lista if not x.isspace()]

输出:

['Segue dados de hoje. \n', 'WDO\n', 'Média\n']

如果您还想删除末尾的换行符和其他空格,请使用rstrip

[x.rstrip() for x in lista if not x.isspace()]

【讨论】:

  • 这非常优雅,比使用正则表达式要好得多
  • 这正是我想要的。谢谢!