在某些字符串之间复制文本
Posted
技术标签:
【中文标题】在某些字符串之间复制文本【英文标题】:Copy text between certain strings 【发布时间】:2014-11-01 10:08:21 【问题描述】:我有一个大约 8MB 的文件要拆分。该文件的结构如下:
XYZ DATA
File01
...
...
...
XYZ DATA
File02
...
在这个文件中,我有大约 50 个所谓的标题,即XYZ DATA File01
等等。在这些标题之间是未定义数量的文本。我想将每个标题 + 以下文本拆分到一个文件中。因此我正在寻找XYZ DATA
,因为这总是在原始文件中重复。每个新文件的文件名都应与XYZ DATA
之后的第二行中的字符串匹配。
我能够用XYZ DATA
识别行,但是我只知道如何将这一行写入一个新文件,但我想将从XYZ DATA
开始到下一个XYZ DATA
的所有内容写入一个新文件文件。
对我来说,这是一件很难的事情。我不想在这里有完整的代码,我想要一些提示。有谁知道我必须做什么。也许是我可以查找的教程?
【问题讨论】:
我们在这里并没有真正做到“一些提示”,而且对教程(和其他场外资源)的建议显然是题外话。 - 读取文件 - 每当您找到“XYZ DATA”时拆分文件。然后循环遍历列表,并将它们存储在单独的小文件中 【参考方案1】:你应该有一个状态变量。变量可以具有三种状态之一(可以是表示状态的整数值)
starting - 程序最初的状态 新文件 - 您刚刚读取了 XYZ 数据行 处理 - 您已读取任何非 XYZ 数据行当您循环浏览文件时,您将状态变量设置为一个状态。最初它是“开始”。当您读取 XYZ DATA 行时,将状态设置为“新文件”(状态可以是整数,并且像 2 这样的值表示“新文件”。当您将状态设置为“新文件”时,保存该行,如果状态当前不是“开始”然后关闭输出文件。当您读取一行并且状态为“新文件”时,将状态设置为“处理”并使用字符串拆分命令获取该行的第一个字段。使用该文件名打开文件并写入保存的 XYZ 行和当前行。循环后关闭打开的文件。
【讨论】:
感谢您的回答,我阅读了一些教程,我想我知道如何使用状态变量 :) 我的问题是,在我的 XYZ 数据之间我有这样的字符:'£〜ŒìšÄ2¡ ÄY•È“'Àå' 这是python无法读取的某种代码,但可以通过十六进制编辑器读取。至少我不能用python打印或复制它。有没有可能让 python 将这些东西复制到不同的文件中? @user3429343 数据可能采用 Python 似乎无法自动处理的 Unicode。请参阅 docs.python.org/2/howto/unicode.html 或 docs.python.org/3/howto/unicode.html 。如果是 Unicode,则应该有编辑器能够阅读它。如果一个支持 Unicode 的编辑器阻塞它,它可能是某种二进制数据,在这种情况下,您将不得不使用二进制文件输入/输出例程读取/写入文件。以上是关于在某些字符串之间复制文本的主要内容,如果未能解决你的问题,请参考以下文章
如何使用Python将某些字符串从文本文件复制到Word doc?