【问题标题】:Python3 Removing Non-Printable chars from textPython3 从文本中删除不可打印的字符
【发布时间】:2024-01-04 09:40:01
【问题描述】:

我有一个输入文件和读取行,进行一些操作并将它们放入输出文件。

当我在记事本中打开输出文件时,没有问题。 当我在 notepad++(UTF8 编码格式或 ANSI)中打开输出文件时,有一些不可打印的字符。例如。 SOH(标题开始)

如何删除不可打印的字符?

SOH的字节码是01,有string.remove(0x01)这样的方法吗??

【问题讨论】:

  • 它们仍在您的记事本文件中,只是不打印不可打印的字符:P
  • 不可打印的字符是否也在输入文件中?如果不是,你可能真的想修复你的脚本,这样它就不会首先生成那些不必要的字符。
  • 是的,输入文件中也存在不可打印的字符。

标签: string python-3.x utf-8 io encode


【解决方案1】:

您可以通过对每个字符调用str.isprintable() 方法来过滤您的文本。不过,您可能需要小心,因为您可能希望保留的某些字符(例如制表符和换行符)被认为是不可打印的。

这里有一些快速(未经测试)的代码:

for line in input_file:
    # do your processing to the line here

    line = "".join(c for c in line if c.isprintable() or c in "\n\t")  # filter line
    output_file.write(line)

如果您愿意,您也可以在其他处理之前进行过滤。

【讨论】: