从Python中的文本文件中删除二进制数据

2024-02-23

我有一个包含一些二进制数据的文本文件。当我使用 Python 3 在文本模式下读取文件时,我收到一个 UniCodeDecodeError (编解码器无法解码字节...),其中包含以下代码行:

fo = open('myfile.txt, 'r')
for line in inFile:

如何从我的文件中删除二进制数据。我有一个在每个二进制数据之前打印的标题(在本例中它显示为数据块)。例如,我的文件看起来像这样,我想删除 çºí?¼Èדñdí”:

我的文件.txt:

ABCDEFGH
123456
Data Block 11
çºí?¼Èדñdí
XYZ123

我想要的结果是 myfile.txt 如下所示:

ABCDEFGH
123456
Data Block 11
XYZ123

这很困难,因为“二进制”斑点may包含有效的字符或字符序列。如果您使用的文件包含使用多字节编码的“文本”,请忘记它。

If you know文件中的“文本”仅包含单字节字符,一种方法是以字节形式读取文件,然后使用类似

encode('ascii', error='ignore')

这有效地从输出中去除非 ASCII 字符,但如果您要在文件上执行此操作,您将得到:



ABCDEFGH
123456
Data Block
?d
XYZ123
  

请注意倒数第二行——在 blob 中找到了有效的 ascii 字符并被视为“文本”。

您可以从这样的解决方案开始,然后对其进行微调(如果可能)以满足您的需求。也许这些斑点本身就出现在线上,所以如果一条线有any非 ASCII 字符,完全丢弃整行。也许你可以看看这些斑点并尝试理解它的一些结构。也许您只是满足于其中有随机的部分字符行,并稍后以某种方式处理它们。那时它是特定于应用程序的。

这是我用来从示例输入生成输出的代码:

def strip_nonascii(b):
    return b.decode('ascii', errors='ignore')

with open('garbled.txt', 'rb') as f:
    for line in f:
        print(strip_nonascii(line), end='')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从Python中的文本文件中删除二进制数据 的相关文章

随机推荐

  • 打开信息活动而不关闭主活动

    我正在制作一个简单的 Android 应用程序 有两个活动 一个 MainActivity 和一个 InfoActivity 我的 ActionBar 上有一个按钮 单击后我想打开我的 InfoActivity 在我的 InfoActivi
  • Eclipse 热代码替换失败 - 重新发布 Web 应用程序

    我在 Tomcat 上的 Web 应用程序中使用热插拔 Java 调试功能 在进行一些类签名更改后 我收到 热代码替换失败 Eclipse 对话框 我明白这一点 在这种情况下 我想要的是重新发布应用程序 我可以做到 并使用新部署的代码 然而
  • 后台核心数据更新

    我基本上需要在后台线程中更新核心数据而不阻塞 UI 并保存它 保存后应重新加载表视图以查看更改 所以为了做到这一点我想使用 dispatch async dispatch get global queue DISPATCH QUEUE PR
  • android 模拟器 2.2 中的相机问题

    我遇到一个问题 在 android 2 2 模拟器中 相机无法工作 它会自动关闭相机 但这个问题在android 1 5模拟器中不会发生 为什么会发生这种情况 任何机构都可以帮忙吗 这是一个已知问题 并且已被多次询问 这里有一些可能的解决方
  • 为什么 AMD GCN 使用非零 NULL?

    这次提交 https reviews llvm org rL289252 says In amdgcn https en wikipedia org wiki Graphics Core Next目标 全局 常量和通用地址空间中的空指针取值
  • 如何将打印输出分配给变量?

    如何分配输出print函数 或任何函数 到变量 举个例子 import eyeD3 tag eyeD3 Tag tag link some file mp3 print tag getArtist 我如何分配输出print tag getA
  • 如何从文件中获取数字并将其放入数组中? [复制]

    这个问题在这里已经有答案了 所以我的程序应该生成 30 个随机数 将它们放入文件中 然后将这些数字保存在数组中 但是当我尝试打印文件中的数字时 它们不是文件中的数字 而是一些随机的大数字 include
  • 跨页面存储信用卡信息的安全方法 ASP.NET MVC

    我正在运行 ASP NET MVC 需要一种安全的方式来临时存储信用卡数据 我有一个订单确认页面 该页面会发布到实际处理订单的操作 我尝试了 TempData 但它无法在帖子中幸存下来 由于会话存储在服务器上 我可以安全地使用它吗 Than
  • 使用 PHP unlink() 方法后获取 0KB 文件

    我正在尝试删除服务器上的文件 下面是我使用的代码 function ServerDel file file realpath file echo file fh fopen file w or die can t open file fcl
  • android: 库模块中的 fcm

    我在将 Firebase Cloud Messaging 集成到库模块中时面临一个奇怪的问题 我正在开发一个图书馆项目 在该项目中我需要处理来自图书馆本身的 FCM 服务器的通知 我不知道这是否可能 我遵循的步骤 我在 Firebase 控
  • Angular 的多种布局

    我正在构建一个 Angular 应用程序 但在如何处理主页方面遇到了一些障碍 主页有 90 的不同 只有标题保持不变 在那里我有显示用户登录状态的指令 为了利用路由 模板等 我理想地希望将我的 ngview 显示在示例的白色区域中 一切正常
  • 使用 git 管理 virtualenv 状态:这会导致问题吗?

    我目前已经以一种完全正确的方式设置了 git 和 virtualenv 满足我的需求 到目前为止 还没有造成任何问题 不过我知道 我的设置是非标准的 我想知道是否有人更熟悉 virtualenv 内部结构可以指出是否以及哪里可能出错 My
  • 从浏览器中删除历史点

    我们可以删除在网络浏览器中创建的历史记录点吗 或者当示例链接 某些链接 时是否可以不添加历史点 被点击并且浏览器中的 url 发生变化 您无法从浏览器历史记录中删除项目 但可以将新文档加载到窗口中并bypassjavascript 的历史
  • HNS 失败并出现错误:参数不正确

    我正在使用 Visual Studio 2017 制作一个 Docker 容器化应用程序 当首先通过 Visual Studio 运行 docker 时 出现错误 ERROR client version 1 22 is too old 通
  • 由于组合框未突出显示,如何“获取”WPF 组合框 PART_EditableTextbox?

    每次单击按钮时 我的 WPF 组合框都会填充一组不同的字符串 窗口上还有其他控件 组合框是窗口中的 第一个 顶部 但文本不会突出显示 当用户通过控件切换时 文本会突出显示 但当它是窗口上的第一个时 文本不会突出显示 也许我需要在组合框本身
  • Python:使用自定义分隔符格式化字符串[重复]

    这个问题在这里已经有答案了 EDITED 我必须使用字典中的值格式化字符串 但该字符串已经包含大括号 例如 raw string DATABASE name DB NAME 但是当然 raw string format my diction
  • 在 Active Directory 中,什么是资源?

    在 AAD node js 库的示例和测试中 00000002 0000 0000 c000 000000000000始终作为资源传递 什么是00000002 0000 0000 c000 000000000000 The 文档 https
  • 函数中的空参数不为 Null

    鉴于这个基本功能 Function TestFunction Param int Par1 string Par2 string Par3 If Par1 ne Null Write Output Par1 Par1 If Par2 ne
  • Scala 检查元素是否存在于列表中

    我需要检查列表中是否存在字符串 并调用相应接受布尔值的函数 是否可以通过一个衬垫来实现这一目标 下面的代码是我能得到的最好的 val strings List a b c val myString a strings find x gt x
  • 从Python中的文本文件中删除二进制数据

    我有一个包含一些二进制数据的文本文件 当我使用 Python 3 在文本模式下读取文件时 我收到一个 UniCodeDecodeError 编解码器无法解码字节 其中包含以下代码行 fo open myfile txt r for line