![見出し画像](https://assets.st-note.com/production/uploads/images/25421529/rectangle_large_type_2_5b97732fd7c68e492c0cd7b6fa3d164f.jpeg?width=1200)
Photo by
bluewaters
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
日付,令和2年4月15日
平成,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