allNwes 數(shù)據處理

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

# CSV的當前路徑
ALL_NEWS_CSV_PATH = "C:/Users/86177/Desktop/ALLNEWS數(shù)據/news_csv/allNews.csv"  # csv文件的路徑
# CSV的當前路徑
ALL_NEWS_SOURCE_DIR = r'C:/Users/86177/Desktop/ALLNEWS數(shù)據/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)

    # 如果規(guī)則生效嗽交,返回匹配內容
    # if content_item_list:
    #     return content_item_list

    # 有序標題分割 (如一颂斜、xxxx)

    # 后續(xù)擴展規(guī)則

    # 默認按照換行分割
    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:  # 循環(huán)讀取每一行
            # 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數(shù)據/news_csv/allNews.csv"  # csv文件的路徑
# CSV的當前路徑
ALL_NEWS_SOURCE_DIR = r'C:/Users/86177/Desktop/ALLNEWS數(shù)據/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)

    # 如果規(guī)則生效邑茄,返回匹配內容
    # if content_item_list:
    #     return content_item_list

    # 有序標題分割 (如一俊啼、xxxx)

    # 后續(xù)擴展規(guī)則

    # 默認按照換行分割,去掉首尾空格
    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:  # 循環(huán)讀取每一行
            # 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數(shù)據/news_csv/allNews.csv"  # csv文件的路徑
# CSV的當前路徑
ALL_NEWS_SOURCE_DIR = r'C:/Users/86177/Desktop/ALLNEWS數(shù)據/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)
    # 如果規(guī)則生效偶器,返回匹配內容
    # if content_item_list:
    #     return content_item_list
    # 有序標題分割 (如一、xxxx)
    # 后續(xù)擴展規(guī)則
    # 默認按照換行分割,去掉首尾空格
    # 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:  # 循環(huán)讀取每一行
            # 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數(shù)據/news_csv/allNews.csv"  # csv文件的路徑
# CSV的當前路徑
ALL_NEWS_SOURCE_DIR = r'C:/Users/86177/Desktop/ALLNEWS數(shù)據/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:                               # 循環(huán)讀取每一行
            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函數(shù)

            dst_save_dir = os.path.join(ALL_NEWS_SOURCE_DIR, news_category)  # 創(chuàng)建種類文件夾
            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文件讀取數(shù)據保存格式為: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數(shù)據/news_csv/allNews.csv"  # csv文件的路徑
# CSV的當前路徑
ALL_NEWS_SOURCE_DIR = r'C:/Users/86177/Desktop/ALLNEWS數(shù)據/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)
    # 如果規(guī)則生效,返回匹配內容
    # if content_item_list:
    #     return content_item_list
    # 有序標題分割 (如一锰瘸、xxxx)
    # 后續(xù)擴展規(guī)則
    # 默認按照換行分割,去掉首尾空格
    # 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:  # 循環(huán)讀取每一行
            # 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)   # 創(chuàng)建種類文件夾
                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()

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末管削,一起剝皮案震驚了整個濱河市撑螺,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌实蓬,老刑警劉巖吊履,帶你破解...
    沈念sama閱讀 211,743評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異艇炎,居然都是意外死亡,警方通過查閱死者的電腦和手機居砖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來奏候,“玉大人唇敞,你說我怎么就攤上這事〗幔” “怎么了?”我有些...
    開封第一講書人閱讀 157,285評論 0 348
  • 文/不壞的土叔 我叫張陵旷档,是天一觀的道長。 經常有香客問我鞋屈,道長故觅,這世上最難降的妖魔是什么渠啊? 我笑而不...
    開封第一講書人閱讀 56,485評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮昭抒,結果婚禮上,老公的妹妹穿的比我還像新娘灭返。我一直安慰自己,他們只是感情好熙含,可當我...
    茶點故事閱讀 65,581評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著邮弹,像睡著了一般。 火紅的嫁衣襯著肌膚如雪腌乡。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,821評論 1 290
  • 那天与纽,我揣著相機與錄音塘装,去河邊找鬼。 笑死蹦肴,一個胖子當著我的面吹牛,可吹牛的內容都是我干的阴幌。 我是一名探鬼主播,決...
    沈念sama閱讀 38,960評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼裂七,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了背零?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,719評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎嫉称,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體织阅,經...
    沈念sama閱讀 44,186評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡震捣,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,516評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了蒿赢。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,650評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡壹若,死狀恐怖,靈堂內的尸體忽然破棺而出店展,到底是詐尸還是另有隱情,我是刑警寧澤秃流,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站睡腿,受9級特大地震影響,放射性物質發(fā)生泄漏。R本人自食惡果不足惜应闯,卻給世界環(huán)境...
    茶點故事閱讀 39,936評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望碉纺。 院中可真熱鬧,春花似錦骨田、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至箱吕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間茬高,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評論 1 266
  • 我被黑心中介騙來泰國打工怎栽, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人熏瞄。 一個月前我還...
    沈念sama閱讀 46,370評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像愚铡,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子胡陪,可洞房花燭夜當晚...
    茶點故事閱讀 43,527評論 2 349

推薦閱讀更多精彩內容