当前位置: 首页 > 知识库问答 >
问题:

使用python将有组织的文本文件转换为csv?

濮阳茂材
2023-03-14

我需要将文本文件转换为csv并按列组织它。但是,文本文件中的数据是按行排列的,长度为715页。下面是文本文件外观的示例:

这是我的数据的一个例子,但实际上每个人的信息要多得多,而且有成千上万的条目。

基本上,每一行都用“----”分隔。但是,行之间的数据是多行的。例如,下一行是姓名和年龄,下一行是薪水,下一行是薪水,下一行是薪水,下一行是薪水,这意味着新条目的开始。

有没有一种方法可以让我绕过这种奇怪的数据布局,最终得到一个csv,其中包含姓名、年龄、职业、薪水等列。我会使用python。我在想,有没有可能用每一行前面的----符号把它分开?不过我不知道该怎么做,而且我是个初学者。或者,如果python可能不是最好的方法,那么它是什么呢?

共有1个答案

康泽宇
2023-03-14

您可以使用itertools.groupby创建在虚线和非虚线之间交替的子迭代器。现在,非破折号迭代器只是文本块。假设这些字段由至少一个制表符或多个空白字符分隔,正则表达式可以将它们分割。

import itertools

def get_my_data(filename):
    data = []
    with open(filename) as fileobj:
        for is_dash, block_iter in itertools.groupby(
                fileobj, lambda line: line.startswith("------")):
            if not is_dash:
                row = []
                for line in block_iter:
                    cols = [cell.strip() for cell in
                        re.split(r"\t+|\s{2,}", line)]
                    row.extend(cols)
                if row:
                    data.append(row)
 类似资料:
  • 本文向大家介绍使用python把json文件转换为csv文件,包括了使用python把json文件转换为csv文件的使用技巧和注意事项,需要的朋友参考一下 了解json整体格式 这里有一段json格式的文件,存着全球陆地和海洋的每年异常气温(这里只选了一部分):global_temperature.json 通过python读取后可以看到其实json就是dict类型的数据,description和

  • 问题内容: 我可以从word2vec网站下载GoogleNews-vectors- negative300.bin.gz。.bin文件(大约3.4GB)是对我无用的二进制格式。Tomas Mikolov向我们保证:“将二进制格式转换为文本格式应该很简单(尽管这将占用更多的磁盘空间)。检查距离工具中的代码,读取二进制文件相当简单。” 不幸的是,我对C的了解不足,无法理解http://word2vec

  • 我有一个oracle DB,根据我们的DB管理,没有设置格式,但是当我们将数据导出到文本文件时,它是以utf-8的形式出现的 谁能帮我把这些文本文件转换成Unicode码吗

  • 问题内容: 我是Tensorflow的新手。我将训练后的模型保存为pb文件,我想使用tensorflow mobile,并且使用TFLITE文件很重要。问题是在谷歌搜索转换器后发现的大多数示例都是在终端或cmd上命令的。能否请您分享一个使用python代码转换为tflite文件的示例? 谢谢 问题答案: 在此TF示例之后,您可以传递“ –Saved_model_dir”参数以将save_model

  • 问题内容: 我需要帮助来理解使用java将XML文件转换为CSV文件所涉及的步骤。这是XML文件的示例 这是生成的CSV文件。 我当时正在考虑使用DOM解析器读取xml文件。我遇到的问题是,我需要按名称指定要编码的特定元素,但我希望它能够解析它而不这样做。 Java中是否有任何工具或库可以帮助我实现这一目标。 如果我下面有这种格式的XML文件,并且想在与MSgId相同的行中添加InitgPty的值

  • 问题内容: 所以我想将一个简单的制表符分隔的文本文件转换为一个csv文件。如果我使用string.split(’\ n’)将txt文件转换为字符串,则会得到一个列表,其中每个列表项都是字符串,每列之间带有’\ t’。我当时以为我可以用逗号替换’\ t’,但它不会像清单中的字符串一样对待字符串,并允许我使用string.replace。这是我的代码的开始,仍然需要解析选项卡“ \ t”的方法。 问题