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

2024-05-14 00:36:15 发布

您现在位置:Python中文网/ 问答频道 /正文

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

这是我的数据的一个例子,但实际上,每个人都有更多的信息,并且有数千条条目

image

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

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


Tags: csv数据方法目的信息示例条目布局
1条回答
网友
1楼 · 发布于 2024-05-14 00:36:15

可以使用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)

相关问题 更多 >