Pythonを使用してテキストファイルをCSVに変換する

スポンサーリンク

Pythonを使用してテキストファイルをCSVファイルに変換してみます。

今回、テキストファイルをCSVファイルに変換するために、pandasモジュールをインストールしています。(pandas 1.0.3を使用しています。)

■Python

今回のPythonのバージョンは、「3.8.2」を使用しています。(Windows10)

■テストでテキストファイルを用意する

テキストファイルをCSVファイルに変換を行いますので、テスト用のテキストファイルを用意します。

■テキストファイル(test.txt)の中身

・見積書
・注文書
・請求書
・行程管理表
・売上管理表

今回用意したテキストファイル(test.txt)は上記になります。ファイルの保存場所は「C:\Users\user\test(フォルダパス)」になります。

■pandasモジュールを使いテキストファイルを変換する

テキストファイルが用意できましたので、次にpandasモジュールを使いテキストファイルに変換するスクリプトを書いていきます。

■コード

import pandas as pd
read_text_file = pd.read_csv (r"C:\Users\user\test\test.txt")
read_text_file.to_csv (r"C:\Users\user\test\new_test.csv", index=None)

インポートでpandasを呼び出して、read_csv関数で変換するテキストファイルを指定します。「read_csv」という名前の関数ですが、テキストファイルを読み込めます。

読み込んだテキストファイルを、to_csv関数で指定したCSVファイルに書き込みを行います。さらに「index=None」と指定することで、indexが不要で書き込みが行われます。

■実行

今回書いたスクリプトを、「text-csv-test.py」という名前で保存し、コマンドプロンプトから実行してみます。

Traceback (most recent call last):
File “C:\Users\user\text-csv-test.py”, line 3, in <module>
read_text_file = pd.read_csv (r”C:\Users\user\test\test.txt”)
File “C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\pandas\io\parsers.py”, line 676, in parser_f
return _read(filepath_or_buffer, kwds)
File “C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\pandas\io\parsers.py”, line 448, in _read
parser = TextFileReader(fp_or_buf, **kwds)
File “C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\pandas\io\parsers.py”, line 880, in __init__
self._make_engine(self.engine)
File “C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\pandas\io\parsers.py”, line 1114, in _make_engine
self._engine = CParserWrapper(self.f, **self.options)
File “C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\pandas\io\parsers.py”, line 1891, in __init__
self._reader = parsers.TextReader(src, **kwds)
File “pandas\_libs\parsers.pyx”, line 529, in pandas._libs.parsers.TextReader.__cinit__
File “pandas\_libs\parsers.pyx”, line 749, in pandas._libs.parsers.TextReader._get_header
UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0x81 in position 0: invalid start byte

実行してみると、UnicodeDecodeErrorというエラーが発生しました。utf-8コーデックがされていないといった内容のエラーです。

今回の用意したテキストファイルは、文字コードが「SJIS(Shift-JIS)」となっています。

文字コードが「SJIS(Shift-JIS)」だとエラーが発生してしまうので、文字コード「UTF-8」に変更してみます。

再度、コマンドプロンプトから実行してみます。

実行してみると、今度はエラーが発生せずに、処理が進んだようなので、CSVファイルの保存先を確認します。

確認してみると、テキストファイルが変換されCSVファイルとして書き出されていることが確認できました。

■文字コードが「SJIS(Shift-JIS)」のままでも変換できるようにスクリプトを変更する

テキストファイルの文字コードが「SJIS(Shift-JIS)」の状態のままでも変換されるようにスクリプトを変更してみます。

■コード

import pandas as pd
read_text_file = pd.read_csv (r"C:\Users\user\test\test.txt",encoding="cp932")
read_text_file.to_csv (r"C:\Users\user\test\new_test.csv", index=None)

「encoding=」というコードを記述し、Shift-JISの一つのバリエーションである文字コードの「cp932」でコーデックされるようにします。

■実行

コマンドプロンプトからスクリプトを実行してみると、CSVファイルに変換できることを確認できました。

コメント

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