【Python】csv・txtファイルの行データを読み込み、リストに1次元配列として格納する
読み込んだ行データをリストに格納する作業がよくあったので、関数化して実装していきたいと思います。
実装
Python 3.7.6
- txtファイル
txt
Apple
Grape
Orange
Melon
Peach
- CSVファイル
引数にtxtかcsvのfileパスを指定すると、読み込んだデータをリストとして返します。
import csv
import itertools # 2次元配列=>1次元配列にするため
TEXT_FILE = 'sample.txt'
CSV_FILE = 'sample.csv'
def read_txtfile_as_list(filePath=None):
"""
テキストファイルを読み込み、リストとして返します。
Parameters
----------
filePath : str
Returns
-------
item_list : list of str
"""
with open(filePath, 'r') as f:
text_data = [line.strip() for line in f]
return text_data
def read_csvfie_as_list(filePath=None):
"""
CSVファイルを読み込み、リストとして返します。
Parameters
----------
filePath : str
Returns
-------
item_list : list of str
"""
with open(filePath, 'r') as f:
csv_data = [line for line in csv.reader(f)]
# return sum(csv_data, []) 簡易的な書き方 こっちだと処理が遅い
return list(itertools.chain.from_iterable(csv_data))
def read_file_as_list(filePath=None):
"""
テキストファイルかCSVファイルを読み込み、リストとして返します。
Parameters
----------
filePath : str
Returns
-------
item_list : list of str
"""
if filePath[-4:] == '.txt':
with open(filePath, 'r') as f:
text_data = [line.strip() for line in f]
return text_data
elif filePath[-4:] == '.csv':
with open(filePath, 'r') as f:
csv_data = [line for line in csv.reader(f)]
return list(itertools.chain.from_iterable(csv_data))
else:
return None
# テキストファイルの中身を表示
text_samp1 = read_txtfile_as_list(TEXT_FILE)
print(text_samp1)
# OUTPUT: ['Apple', 'Grape', 'Orange', 'Melon', 'Peach']
# CSVファイルの中身を表示
csv_samp1 = read_csvfie_as_list(CSV_FILE)
print(csv_samp1)
# OUTPUT: ['dog', 'cat', 'cow', 'fox', 'monkey']
# テキスト・CSVファイルの中身を表示
text_samp2 = read_file_as_list(TEXT_FILE)
csv_samp2 = read_file_as_list(CSV_FILE)
print(text_samp2)
print(csv_samp2)
# OUTPUT: ['Apple', 'Grape', 'Orange', 'Melon', 'Peach']
# OUTPUT: ['dog', 'cat', 'cow', 'fox', 'monkey']
書いている途中で行データだけを読み込むのであれば、標準のreadlines
メソッドで読み込めるので、csvライブラリをインポートする必要性はなかったなーと思ったのですが、今後、csvファイルの中身をリストにする機会があるかもしれないと思ったので、一応、残しておきます。
Author And Source
この問題について(【Python】csv・txtファイルの行データを読み込み、リストに1次元配列として格納する), 我々は、より多くの情報をここで見つけました https://qiita.com/taiiii123/items/614b3a054112cec1bb4d著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .