allNwes 数据处理

#!/usr/bin/python3.6
# -*- coding: utf-8 -*-
import re
import os
import csv

# CSV的当前路径
ALL_NEWS_CSV_PATH = "C:/Users/86177/Desktop/ALLNEWS数据/news_csv/allNews.csv"  # csv文件的路径
# CSV的当前路径
ALL_NEWS_SOURCE_DIR = r'C:/Users/86177/Desktop/ALLNEWS数据/allNews/allNews'
# 保存路径
ALL_NEWS_SAVE_DIR = r'D:/data'


def read_news(news_path):
    """

    :param news_path: 新闻文件路径
    :return:
    """
    with open(news_path, "r") as fr:  # 以读的方式打开
        content = fr.read()  # 读取文件到内存
    # print(content)
    # 时间分割类型(如2017.01.06)
    # content_item_list = re.split(r"(\d{4}[.-]\d{1,2}[.-]\d{1,2})", content)

    # 打印匹配内容
    # for item in content_item_list:
    #     pass
    #     print(item)

    # 如果规则生效,返回匹配内容
    # if content_item_list:
    #     return content_item_list

    # 有序标题分割 (如一、xxxx)

    # 后续扩展规则

    # 默认按照换行分割
    content_item_list = content.split('\n\n')  # 换行符待定,windows默认\r\n
    print(content_item_list)

    return content_item_list


def read_csv(csv_path):
    """

    :param csv_path: csv导航文件路径
    :return:
    """
    news_summary_list = []  # 存储新闻总表
    with open(csv_path, "r") as fr:  # 同时打开多个文件
        reader = csv.reader(fr)  # 读取csv文件
        for line in reader:  # 循环读取每一行
            # print(type(line))
            # print(line)
            # news_item_list = line.split(',')  # 存储单项新闻检索信息
            news_summary_list.append(line)
    return news_summary_list


def save_news(save_dir, news_name, news_title, content_item_list):
    """
    保存一条新闻内容
    :param save_dir:
    :param news_name:
    :param news_title:
    :param content_item_list:
    :return:
    """
    # 步骤一,保存标题
    save_news_name_title = news_name + '-' + '1' + '.txt'
    save_news_path_title = os.path.join(save_dir, save_news_name_title)
    with open(save_news_path_title, "w+") as fw:  # 追加写入标题到文件
        fw_title = fw.write(news_title)  # 把标题内容写到fw里

    for index, item in enumerate(content_item_list):
        save_news_name_content = news_name + '-' + str(index + 2) + '.txt'
        save_news_path_content = os.path.join(save_dir, save_news_name_content)
        with open(save_news_path_content, "w+") as fw:  # 追加写入新闻内容到文件
            fw_news = fw.write(item)  # 把每一段内容写到fw里


def save_all_news(news_summary_list):
    for index, item in enumerate(news_summary_list):
        try:
            news_name = item[0]
            news_title = item[1]
            news_category = item[3]

            news_file_name = item[0] + '.txt'
            news_path = os.path.join(ALL_NEWS_SOURCE_DIR, news_file_name)
            content_item_list = read_news(news_path)

            dst_save_dir = os.path.join(ALL_NEWS_SAVE_DIR, news_category)
            if not os.path.exists(dst_save_dir):
                os.makedirs(dst_save_dir)

            save_news(dst_save_dir, news_name, news_title, content_item_list)
        except Exception as err:
            print(err)
            continue


def main():
    # csv_path = os.path.join(ALL_NEWS_SOURCE_DIR, 'allNews.csv')
    news_summary_list = read_csv(ALL_NEWS_CSV_PATH)
    save_all_news(news_summary_list)


if __name__ == '__main__':
    main()


修正版:

#!/usr/bin/python3.6
# -*- coding: utf-8 -*-
import re
import os
import csv

# CSV的当前路径
ALL_NEWS_CSV_PATH = "C:/Users/86177/Desktop/ALLNEWS数据/news_csv/allNews.csv"  # csv文件的路径
# CSV的当前路径
ALL_NEWS_SOURCE_DIR = r'C:/Users/86177/Desktop/ALLNEWS数据/allNews/allNews'
# 保存路径
ALL_NEWS_SAVE_DIR = r'D:/data'


def read_news(news_path):
    """
    :param news_path: 新闻文件路径
    :return:
    """
    with open(news_path, "r") as fr:  # 以读的方式打开
        content = fr.read()  # 读取文件到内存
    print(content)
    # 时间分割类型(如2017.01.06)
    # content_item_list = re.split(r"(\d{4}[.-]\d{1,2}[.-]\d{1,2})", content)

    # 打印匹配内容
    # for item in content_item_list:
    #     pass
    #     print(item)

    # 如果规则生效,返回匹配内容
    # if content_item_list:
    #     return content_item_list

    # 有序标题分割 (如一、xxxx)

    # 后续扩展规则

    # 默认按照换行分割,去掉首尾空格
    content_item_list = content.strip().split('\n\n')  # 换行符待定,windows默认\r\n
    # print(content_item_list)
    # 加筛选条件清除空文件和无意义文件
    return content_item_list


def read_csv(csv_path):
    """

    :param csv_path: csv导航文件路径
    :return:
    """
    news_summary_list = []  # 存储新闻总表
    with open(csv_path, "r") as fr:  # 同时打开多个文件
        reader = csv.reader(fr)  # 读取csv文件
        for line in reader:  # 循环读取每一行
            # print(type(line))
            # print(line)
            # news_item_list = line.split(',')  # 存储单项新闻检索信息
            news_summary_list.append(line)
    return news_summary_list


def save_news(save_dir, news_name, news_title, content_item_list):
    """
    保存一条新闻内容
    :param save_dir:
    :param news_name:
    :param news_title:
    :param content_item_list:
    :return:
    """
    # 步骤一,保存标题
    save_news_name_title = news_name + '-' + '1' + '.txt'
    save_news_path_title = os.path.join(save_dir, save_news_name_title)
    with open(save_news_path_title, "w+") as fw:  # 追加写入标题到文件
        fw_title = fw.write(news_title)  # 把标题内容写到fw里

    for index, item in enumerate(content_item_list):
        save_news_name_content = news_name + '-' + str(index + 2) + '.txt'
        save_news_path_content = os.path.join(save_dir, save_news_name_content)
        with open(save_news_path_content, "w+") as fw:  # 追加写入新闻内容到文件
            fw_news = fw.write(item)  # 把每一段内容写到fw里


def save_all_news(news_summary_list):
    for index, item in enumerate(news_summary_list):
        try:
            news_name = item[0]
            news_title = item[1]
            news_category = item[3]

            news_file_name = item[0] + '.txt'
            news_path = os.path.join(ALL_NEWS_SOURCE_DIR, news_file_name)
            content_item_list = read_news(news_path)

            dst_save_dir = os.path.join(ALL_NEWS_SAVE_DIR, news_category)
            if not os.path.exists(dst_save_dir):
                os.makedirs(dst_save_dir)

            save_news(dst_save_dir, news_name, news_title, content_item_list)
        except Exception as err:
            print(err)
            continue


def main():
    # csv_path = os.path.join(ALL_NEWS_SOURCE_DIR, 'allNews.csv')
    news_summary_list = read_csv(ALL_NEWS_CSV_PATH)
    save_all_news(news_summary_list)


if __name__ == '__main__':
    main()



版本3:清除空文件和小于4个字符的文件

#!/usr/bin/python3.6
# -*- coding: utf-8 -*-

import os
import csv

# CSV的当前路径
ALL_NEWS_CSV_PATH = "C:/Users/86177/Desktop/ALLNEWS数据/news_csv/allNews.csv"  # csv文件的路径
# CSV的当前路径
ALL_NEWS_SOURCE_DIR = r'C:/Users/86177/Desktop/ALLNEWS数据/allNews/allNews'
# 保存路径
ALL_NEWS_SAVE_DIR = r'D:/data'


def read_news(news_path):
    """
    :param news_path: 新闻文件路径
    :return:
    """
    with open(news_path, "r") as fr:              # 以读的方式打开
        content = fr.readlines()                  # 读取文件到内存
        content_item_list = list()                # 新建空列表保存line(str)
        for line in content:                      # 依次读取每行
            line = line.strip()                   # 去掉每行头尾空白
            if not len(line) or len(line) < 4:    # 判断是否是空行或小于四个字符
                continue                          # 是的话,跳过不处理
            content_item_list.append(line)
    print(content)
    # 时间分割类型(如2017.01.06)
    # content_item_list = re.split(r"(\d{4}[.-]\d{1,2}[.-]\d{1,2})", content)

    # 打印匹配内容
    # for item in content_item_list:
    #     pass
    #     print(item)
    # 如果规则生效,返回匹配内容
    # if content_item_list:
    #     return content_item_list
    # 有序标题分割 (如一、xxxx)
    # 后续扩展规则
    # 默认按照换行分割,去掉首尾空格
    # content_item_list = content.strip().split('\n\n')  # 第一种切分方法,windows默认\r\n
    # print(content_item_list)
    # 加筛选条件清除空文件和无意义文件
    return content_item_list


def read_csv(csv_path):
    """

    :param csv_path: csv导航文件路径
    :return:
    """
    news_summary_list = []  # 存储新闻总表
    with open(csv_path, "r") as fr:  # 同时打开多个文件
        reader = csv.reader(fr)  # 读取csv文件
        for line in reader:  # 循环读取每一行
            # print(type(line))
            # print(line)
            # news_item_list = line.split(',')  # 存储单项新闻检索信息
            news_summary_list.append(line)
    return news_summary_list


def save_news(save_dir, news_name, news_title, content_item_list):
    """
    保存一条新闻内容
    :param save_dir:
    :param news_name:
    :param news_title:
    :param content_item_list:
    :return:
    """
    # 步骤一,保存标题
    save_news_name_title = news_name + '-' + '1' + '.txt'
    save_news_path_title = os.path.join(save_dir, save_news_name_title)
    with open(save_news_path_title, "w+") as fw:  # 追加写入标题到文件
        fw_title = fw.write(news_title)  # 把标题内容写到fw里

    for index, item in enumerate(content_item_list):
        save_news_name_content = news_name + '-' + str(index + 2) + '.txt'
        save_news_path_content = os.path.join(save_dir, save_news_name_content)
        with open(save_news_path_content, "w+") as fw:  # 追加写入新闻内容到文件
            fw_news = fw.write(item)  # 把每一段内容写到fw里


def save_all_news(news_summary_list):
    for index, item in enumerate(news_summary_list):
        try:
            news_name = item[0]
            news_title = item[1]
            news_category = item[3]

            news_file_name = item[0] + '.txt'
            news_path = os.path.join(ALL_NEWS_SOURCE_DIR, news_file_name)
            content_item_list = read_news(news_path)

            dst_save_dir = os.path.join(ALL_NEWS_SAVE_DIR, news_category)
            if not os.path.exists(dst_save_dir):
                os.makedirs(dst_save_dir)

            save_news(dst_save_dir, news_name, news_title, content_item_list)
        except Exception as err:
            print(err)
            continue


def main():
    # csv_path = os.path.join(ALL_NEWS_SOURCE_DIR, 'allNews.csv')
    news_summary_list = read_csv(ALL_NEWS_CSV_PATH)
    save_all_news(news_summary_list)


if __name__ == '__main__':
    main()

格式整理版本

#!/usr/bin/python3,6         #指定解释器
# -*- coding: utf-8  -*-     #指定编码
import os
import csv


# CSV的当前路径
ALL_NEWS_CSV_PATH = r"C:/Users/86177/Desktop/ALLNEWS数据/news_csv/allNews.csv"  # csv文件的路径
# CSV的当前路径
ALL_NEWS_SOURCE_DIR = r'C:/Users/86177/Desktop/ALLNEWS数据/allNews/allNews'
# 保存路径
ALL_NEWS_SAVE_DIR = r'D:/data'


def read_news(news_path):
    """
    :param news_path:csv导航文件路径
    :return: content_item_list
    """
    with open(news_path, 'r') as fr:
        content = fr.read()
    print(content)
    content_item_list = content.strip().split('\n\n')
    return content_item_list


def read_csv(csv_path):
    """
    :param csv_path:
    :return:news_summary_list
    """
    news_summary_list = []                                # 存储新闻总表
    with open(csv_path, 'r') as fr:                       # 同时打开多个文件
        reader = csv.reader(fr)                           # 读取csv文件
        for line in reader:                               # 循环读取每一行
            news_summary_list.append(line)

    return news_summary_list


def save_all_news(news_summary_list):
    """
    :param news_summary_list:
    :return:
    """
    # (从csv文件获取每个新闻的id和标题,种类)
    for index, item in enumerate(news_summary_list):
        try:
            news_name = item[0]
            news_title = item[1]
            news_category = item[3]

            news_file_name = item[0] + '.txt'   # 拼接news保存的格式
            news_path = os.path.join(ALL_NEWS_SOURCE_DIR, news_file_name)   # 拼接news保存路径
            content_item_list = read_news(news_path)      # 调用read_news函数

            dst_save_dir = os.path.join(ALL_NEWS_SOURCE_DIR, news_category)  # 创建种类文件夹
            if not os.path.exists(dst_save_dir):
                os.makedirs(dst_save_dir)

            # 调用save_news 保存文件
            save_news(dst_save_dir, news_name, news_title, content_item_list)

        except Exception as err:                # 抛出异常
            print(err)
            continue


def save_news(save_dir, news_name, news_title, content_item_list):
    """
    :param save_dir: ???
    :param news_name:
    :param news_title:
    :param content_item_list:
    :return:
    """
    # 第一步;保存标题(csv文件),#从csv文件读取数据保存格式为:9354665-1,txt
    save_news_name_title = news_name + '-' + '1' + '.txt'
    save_news_path_title = os.path.join(save_dir, save_news_name_title)

    with open(save_news_name_title, "w+") as fw:        # 追加写入到标题
        fw_title = fw.write(news_title)                 # 把标题内容写到fw里

    for index, item in enumerate(content_item_list):
        save_news_name_content = news_name + '-' + str(index + 2) + '.txt'  # 自动编码
        save_news_path_content = os.path.join(save_dir, save_news_name_content)    # txt文件保存的路径

        with open(save_news_path_content, "w+") as fw:              # 追加写入新闻内容到文件
            fw_news = fw.write(item)                                # 把每一段内容写到fw里


def main():
    news_summary_list = read_csv(ALL_NEWS_CSV_PATH)
    save_all_news(news_summary_list)

if __name__ == '__main__':
    main()

第四版

358543.txt_0001

#!/usr/bin/python3.6
# -*- coding: utf-8 -*-

import os
import csv
import glob

# CSV的当前路径
ALL_NEWS_CSV_PATH = r"C:/Users/86177/Desktop/ALLNEWS数据/news_csv/allNews.csv"  # csv文件的路径
# CSV的当前路径
ALL_NEWS_SOURCE_DIR = r'C:/Users/86177/Desktop/ALLNEWS数据/allNews/allNews'
# 保存路径
ALL_NEWS_SAVE_DIR = r'D:/data003'


def read_news(news_path):
    """
    :param news_path: 新闻文件路径
    :return:
    """
    # summary_content = []
    with open(news_path, "r") as fr:              # 以读的方式打开
        content = fr.readlines()                  # 读取文件到内存
        # summary_content.append(content)
        # if len(summary_content) <= 10000:
        #     # continue
        content_item_list = list()                # 新建空列表保存line(str)
        for line in content:                      # 依次读取每行
            line = line.strip()                   # 去掉每行头尾空白
            if not len(line) or len(line) < 8:    # 判断是否是空行或小于四个字符
                continue                          # 是的话,跳过不处理
            content_item_list.append(line)
        print(content)
    # 时间分割类型(如2017.01.06)
    # content_item_list = re.split(r"(\d{4}[.-]\d{1,2}[.-]\d{1,2})", content)

    # 打印匹配内容
    # for item in content_item_list:
    #     pass
    #     print(item)
    # 如果规则生效,返回匹配内容
    # if content_item_list:
    #     return content_item_list
    # 有序标题分割 (如一、xxxx)
    # 后续扩展规则
    # 默认按照换行分割,去掉首尾空格
    # content_item_list = content.strip().split('\n\n')  # 第一种切分方法,windows默认\r\n
    # print(content_item_list)
    # 加筛选条件清除空文件和无意义文件
    return content_item_list


def read_csv(csv_path):
    """

    :param csv_path: csv导航文件路径
    :return:
    """
    news_summary_list = []  # 存储新闻总表
    with open(csv_path, "r") as fr:    # 同时打开多个文件
        reader = csv.reader(fr)  # 读取csv文件
        for line in reader:  # 循环读取每一行
            # print(type(line))
            # print(line)
            # news_item_list = line.split(',')  # 存储单项新闻检索信息
            news_summary_list.append(line)
    return news_summary_list


def save_news(save_dir, news_name, news_title, content_item_list):
    """
    保存一条新闻内容
    :param save_dir:
    :param news_name:
    :param news_title:
    :param content_item_list:
    :return:
    """
    # 步骤一,保存标题
    save_news_name_title = news_name + '.txt' + '_' + '0001'
    save_news_path_title = os.path.join(save_dir, save_news_name_title)
    with open(save_news_path_title, "w+") as fw:  # 追加写入标题到文件
        fw_title = fw.write(news_title)  # 把标题内容写到fw里

    for index, item in enumerate(content_item_list):
        #  f1 = new DecimalFormat("0000");
        # String_paragraphName = strFileName + "_" + f1.format(i);这是落文本编号能不能format一下

        index_length = len(str(index + 2))

        # 定制文件名
        if index_length == 1:
            save_news_name_content = news_name + '.txt' + '_000' + str(index + 2)
        elif index_length == 2:
            save_news_name_content = news_name + '.txt' + '_00' + str(index + 2)
        elif index_length == 3:
            save_news_name_content = news_name + '.txt' + '_0' + str(index + 2)
        else:
            save_news_name_content = news_name + '.txt' + '_' + str(index + 2)

        save_news_path_content = os.path.join(save_dir, save_news_name_content)
        with open(save_news_path_content, "w+") as fw:  # 追加写入新闻内容到文件
            fw_news = fw.write(item)   # 把每一段内容写到fw里


def save_all_news(news_summary_list):
    for index, item in enumerate(news_summary_list):
        try:
            news_name = item[0]
            news_title = item[1]
            news_category = item[3]

            news_file_name = item[0] + '.txt'

            # 加一个约束,只读前一千个文件
            p = list()
            while len(p.append(news_file_name)) <= 1000:
                news_path = os.path.join(ALL_NEWS_SOURCE_DIR, news_file_name)
                content_item_list = read_news(news_path)

                dst_save_dir = os.path.join(ALL_NEWS_SAVE_DIR, news_category)   # 创建种类文件夹
                if not os.path.exists(dst_save_dir):
                    os.makedirs(dst_save_dir)
                    save_news(dst_save_dir, news_name, news_title, content_item_list)
        except Exception as err:
            print(err)
            continue


def main():
    # csv_path = os.path.join(ALL_NEWS_SOURCE_DIR, 'allNews.csv')
    news_summary_list = read_csv(ALL_NEWS_CSV_PATH)
    save_all_news(news_summary_list)


if __name__ == '__main__':
    main()

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343

推荐阅读更多精彩内容