CeVIO AIのインポートファイルの作成 2

python Python

はじめに

前回作成した「CeVIO AIのインポートファイルの作成」を修正します。
1タイトルで1ファイルで作成しましたが、1タイトルの行数が少ない物もありますので、
インポート作業が大変でしたので、1ファイルを900行(最大行数)で作成できるように
修正しました。

修正内容

Cevio AIの仕様が一回のインポートが最大1000行となります。
また、一行の文字数が最大200文字となりますので、
今回は、最大値の1割程度余裕を持ち、最大で900行のファイルを作成します。
また、単純にファイルをつなげると意味が分からなくなりますので、
前回のファイル名をそのまま、タイトルとしてファイルに書き込みするようにしました。

ソース

import pandas as pd
import re

def main():
    """メイン処理"""
    #csvファイルの読み込み
    file_name=".\\isekainiotosareta.csv" #ファイルのパスを記載する
    #出力ファイルのディレクトリパスを記載する
    out_dir = ".\\out_dir"
    try:
        #CSVファイルの読み込み
        df_file = pd.read_csv(file_name)
    except IOError as e:
        print("ioerr:",e)
        return -1
    else:
       #index値を取得する
        df_size = df_file.index.stop
        #print(df_size)

        #一タイトルごとに取得する
        s_list=[] #1ファイルの書き込みリストを初期化する
        max_size = 900
        index_name=0
        for idx in range(df_size):
            #タイトルを取得する
            str_title = df_file.loc[idx,'title']
            #内容を取得する
            str_text  = df_file.loc[idx,'text']
            #リストに変更する
            str_list = str_text.split("\n")

            #空行を飛ばすため、詰めなおす。
            str_title_idx="タイトル:"+str(idx)+"_"+str_title
            s_list_temp=[]
            ss_title =str_title_idx.encode('cp932', "ignore")
            s_list_temp.append(ss_title)
            for ss in str_list:
                #空は飛ばす
                if(ss != ''):
                    #ファイルに書き込む時に改行を入れたいのでここで入れる
                    ssb=ss+"\n"
                    #cevio aiがshift-jisなのでUTF-8から返還する
                    #この時に変換失敗した場合は失敗した文字を飛ばす。
                    ss_sji =ssb.encode('cp932', "ignore")
                    s_list_temp.append(ss_sji)
            list_size = (len(s_list)+len(s_list_temp))
            if(max_size<list_size):
                #900行を超えるようなら書き込みを行う
                try:
                    s_title = "{:04d}".format(index_name)
                    f = open(out_dir+'\\'+s_title+'.txt', 'wb')
                    f.writelines(s_list)
                    f.close()
                    s_list=[]
                    s_list=s_list_temp
                    index_name=index_name+1

                except IOError as e:
                    print("ioerr:",e)
                    return -1
            else:
                s_list=s_list+s_list_temp
                #print(len(s_list))
        print(len(s_list)) 
        try:
            print(len(s_list))  
            s_title = "{:04d}".format(index_name)
            print(s_title)
            f = open(out_dir+'\\'+s_title+'.txt', 'wb')
            f.writelines(s_list)
            f.close()
            s_list=[]

        except IOError as e:
            print("ioerr:",e)
            return -1


if __name__ == '__main__':
    main()

最後に

他にも改造できそうな箇所があれば更新します。

コメント

  1. whoiscall より:

    Great article.

タイトルとURLをコピーしました