Python 文字列を指定文字で分割してリスト化「split」。改行コードを除去する「rstrip」

'20/03/21更新:コードを見易く更新しました。
 分割対象文字を左側から検索するsplit、右側から検索するrsplit、改行コードを除去するrstripメソッドを使用します。
 本記事では、下図のように各行「文字列=数字」となっている。対象となるabcまたはghiを見つけたら「=」で分割して数値をリストへ格納し、最後に和計算してファイルに書き出す仕様です。

f:id:HK29:20180415160951p:plain

  下図はプログラム実行の結果です。abc=230とghi=-9の和221が出力されてます。

f:id:HK29:20180415162456p:plain

▼プログラム本体

# -*- coding: utf-8 -*-
import os, sys

def make_dict(input_file):
    dict = {}
    with open(input_file, 'r') as f:
        for row in f:
            for target in target_list:
                if row.find(target) != -1: # 真の場合に実行。他の書き方には、if target in row:でも可能
                    print(row)
                    print(str(row.split("="))) # = で分割してリストへ格納
                    print(row.split("=")[1]) # リスト中2つ目の数値を抽出
                    print(row.split("=")[1].rstrip()) # 末尾の改行コードを除去
                    dict[target] = row.split("=")[1].rstrip()
    print('dict', dict)

    return dict

def main():
    # 文字列を「=」で分割して、その前の文字列を辞書型のキーへ、その後ろの数値をバリューへ設定
    my_dict = make_dict(input_file)

    # 辞書をループで回して、数値を和を算出
    my_sum = 0
    for key, value in my_dict.items():
        my_sum += float(value)
    
    # 値をファイルへ出力
    with open(output_file, 'w') as f:
        f.write('sum=' + str(my_sum) + '\n')

if __name__ == '__main__':
    input_file = 'rawdata.txt'
    target_list=['abc', 'ghi']
    output_file = 'outdata.txt'
    
    main()
    print('finished')
    

 上記プログラムの実行履歴を下図に示します。文字列を分割してリスト化→改行コードの除去→最後に、辞書化してる様子です。

f:id:HK29:20200321104852p:plain

以上

<広告>