初めて質問させて頂きます。
pythonは1カ月ほど前から独学で始めました。
質問をする前に、きちんと勉強をするのが筋かとは思いますが、どうぞご助力頂けませんでしょうか…。質問内容に不備等あればご指摘頂ければ幸いです。
前提・実現したいこと
csvファイルを読み込み、特定の文字列(9ケタの数字)が含まれる行の内容を書き換えた上で、別のcsvファイルに出力したいと考えております。
作業手順として以下の通りをイメージしております。
①csvファイルを読み込む(仮にtest.csvとします)
|列1|列2|列3|列4|
|:--|:--:|:--:|
|立替金|2018/11/16|立替金精算|¥XXX|
|厚生費|2018/11/16|123456789経緯費申請|¥XXX|
|仮払金|2018/11/16|仮払申請234567890|¥XXX|
②列3に9ケタの文字列が含まれている場合、内容を9ケタの文字列のみに書き換える。
|列1|列2|列3|列4|
|:--|:--:|:--:|
|立替金|2018/11/16|立替金精算|¥XXX|
|厚生費|2018/11/16|123456789|¥XXX|
|仮払金|2018/11/16|234567890|¥XXX|
③②の内容を新しいcsvへ出力する(仮にresult.csvとします)。
発生している問題・エラーメッセージ
どのようなコードを書けば②が実現できるかが分からず困っております。
9ケタの数字の文字列は[0-9]{9}という正規表現で検索できるかと思いますが、これに該当した場合、行を書き換えるという表現の記載方法が分からず、皆様のお知恵をお借りしたいです。
該当のソースコード
python
1file=open("test.csv","r") 2out_file=("result.csv","w") 3out_file.write("列1,列2,列3,列4\n") 4file.readline() 5lines=file.readlines() 6for line in lines: 7 if "[0-9]{9}" in line: 8 line.replace "[0-9]{9}" #申し訳ありません、この周辺行が特に分かりません。 9 row="{},{},{},{}\n".format( 10 line[1], 11 line[2], 12 line[3], 13 line[4] 14 ) 15 out_file.write(row) 16file.close() 17out_file.close() 18
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/11/16 04:00