python实现excel内容逐行写入txt

需求

  最近在做文本分类,拿到的数据很乱。要做下一步,不管是分词还是tfidf都要先做数据的分类。

 

元数据

  3万篇文章,在一个excel中,每行有每篇文章的id、内容(title_content)、分类(relative breeds),(共三列)。

 

目标

 按分类创建子目录,文章按分类放入子目录中,每篇文章写入一个txt文件,txt文件标题为文章id

 

README

excel的读入使用了pandas,pandas的逐行读取功能很好用。

网上有些教程使用了xlrd,感觉有点复杂,而且xlrd好像有文件大小的限制。相比较而言pandas没有大小限制,个人感觉速度也比较快。

路径的操作使用了python标准库os。

同样的方法,也可以读取txt写入excel,读取csv写入excel。只需要更改pandas的读取文件函数就好了。

pandas真好用啊

"""
@version:python3.6

@author:chenyaooo

@concact:[email protected]

"""

import pandas as pd
import os


def creatcatesdir(data, target):
"""
创建类别目录
"""
    # 获取去重后的分类列表
    cates = list(data['relative breeds'].unique())
    print(cates)
    for cate in cates:
        # 拼接子目录路径
        final_path = target + cate
        try:
            os.mkdir(final_path) # 创建目录
        except Exception as e:
            print(str(e))


def excel2txt(data, target):
    # 创建类别目录
    creatcatesdir(data, target)

    # 逐条获取excel中的内容
    for index, row in data.iterrows():
        # 文章内容
        content = row['title_content']
        # 文件名 -> 文章id
        filename = row['id']
        # 子目录 -> 类别
        cate = row['relative breeds']
        # 拼接文件路径
        txt_path = target + cate + os.sep
        # 将文章内容写入txt
        with open(txt_path + str(filename) + ".txt", 'wt') as f:
            f.write(content)


def main():
    # 使用pandas读取excel
    data = pd.read_excel('../data/processed/article_breeds20k_tc.xls')
    # 主目录 需要提前创建好
    targetfile = "../article/"
    excel2txt(data, targetfile)


if __name__ == '__main__':
main()

 

以上所有的编码都使用的python默认编码utf-8

如果还有更好的方法,请留言指教。

做数据整理都是为了接下来的文本分类,推荐一篇非常好的文本分类教程

python 中文文本分类

 

你可能感兴趣的:(python)