見出し画像

Pythonでテキストの抽出をしてみる-CSVファイルの作成

PythonでCSVファイルを作成するシリーズは今回で最後になります。前回までで作成したデータを使ってCSVに変えるだけになります。

前回までのコード

前回までのコードを貼っておきます

import os
import re

 #ファイルの読み込み path = '1pdf.txt'

 #ファイルを開く with open(path) as open_file:
 areas = open_file.read()
 #str型に変換
 str_areas = str(areas)
 #print(str_areas)

 results = re.findall(r"整理番号:\d*", str_areas)
 with open("sample_python_txt.txt",'a',newline='') as f:
     for result in results:
         #result = result.split()
         print(result[:4] + ":" + result[5:])
         f.write(result[:4] + ":" + result[5:] + '\n')

#令和の日付
 results = re.findall(r"日付:[明治|大正|昭和|平成|令和]+\d+年\d月\d+日", str_areas)
 with open("sample_python_txt.txt",'a',newline='') as f:
     for result in results:
         #result = result.split()
         print(result[:2] + ":" + result[3:])
         f.write(result[:2] + ":" + result[3:] + '\n')

#平成を取得
 results = re.findall(r"[明治|大正|昭和|平成|令和]+[\s]+[0-9]+年[0-9]月+[\s]+[0-9]+日", str_areas)
 with open("sample_python_txt.txt",'a',newline='') as f:
     for result in results:
         result = result.replace(' ', '')
         print(result[:2] + ":" + result[2:])
         f.write(result[:2] + ":" + result[2:] + '\n')

#提出人と参考人を取得
 results = re.findall(r"提出人[\s\S]+[0-9]+", str_areas)
 with open("sample_python_txt.txt",'a',newline='') as f:
     for result in results:
         result = result.split()
         print(result[0] + ":"+ result[1])
         print(result[2] +":"+ result[3] + result[4] + "様")
         f.write(result[0]+ ":"+ result[1] + '\n')
         f.write(result[2]+ ":"+ result[3] + result[4] + "様" + '\n')

#提出日を取得
 results = re.findall(r"提出日[\s\S]+[明治|大正|昭和|平成|令和][\s\S][0-9 0-9]+年[\s\S][0-9 0-9]月[0-9 0-9]+日", str_areas)
 with open("sample_python_txt.txt",'a',newline='') as f:
     for result in results:
         #result = result.split()
         result = result.replace(' ', '')
         print(result[0:3]+ ":" +result[3:])
         f.write(result[0:3]+ ":" +result[3:] + '\n')

#提出番号+通知番号
 results = re.findall(r"提出番号[\s\S]+[a-zA-Za-zA-Z]*[0-9 0-9]", str_areas)
 with open("sample_python_txt.txt",'a',newline='') as f:
     for result in results:
         result = result.split()
         print(result[0]+ ":" +result[2])
         print(result[1]+ ":" +result[3])
         f.write(result[0]+ ":" +result[2] + '\n')
         f.write(result[1]+ ":" +result[3] + '\n')

import csvを追記する

PythonでCSVを使う時はimport csvを追記します。import reの下にします。コードでいうとこの3行目あたりになります。

import os
import re
import csv
 #ファイルの読み込み 
path = 'pdf.txt'
~中略~

こんな感じにします。

コードを追記

CSVに変換するためのコードを追記します

 #CSV作成 
txt_file = r"sample_python_txt.txt"
csv_file = r"sample_python_txt.csv"

in_txt = csv.reader(open(txt_file, "r"), delimiter = ':')
out_csv = csv.writer(open(csv_file, 'w'))

out_csv.writerows(in_txt)

これがそのコードになります。

内容としては、テキストファイルを一度開いて、その後拡張子csvでcsv保存するということです。

in_txt = csv.reader(open(txt_file, "r"), delimiter = ':')

は、「:」を「,」に置き換えるという事になります。

実際に見てみる

[macan@localhost ~]$ cat sample_python_txt.csv
整理番号,322636940
日付,令和2415日
平成,30年5月 2日
提出人,544506015206
参考人,青しそ大葉様
提出日,昭和16年2月 29日
提出番号,PYT/MQL4827/793784
通知番号,通知256488

ちゃんとなってますね

整理番号,322636940
日付,令和2年4月15日
平成,30年5月 2日
提出人,544506015206
参考人,青しそ大葉様
提出日,昭和16年2月 29日
提出番号,PYT/MQL4827/793784
通知番号,通知256488

文字コードはUTF-8なのでExcelなどで開くと文字化けします。気をつけてください。

まとめ

テキストの抽出からcsvへの保存までしてみました。もっとスマートな書き方やスマートな方法があるかもしれませんが、これが今の僕の限界なので汚いコードは許してください。

Pythonに慣れてきたら綺麗なコードになると思います。

お役に立ちましたか?

投げ銭をいただけるともっと頑張れます!
・note
・仮想通貨(bitflyer)
キャッシュ
のどれでも構いません
ビットコインアドレスは以下になります
3LHnADwZwUbic2L45EnVJEykiG6KfbqrwS

この記事が気に入ったらサポートをしてみませんか?