質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

728閲覧

複数あるcsvファイルから、共通する変数の要素を抜き出したい

sakuras

総合スコア14

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/05/06 12:42

変数として、名前、年齢、職業、住所があり、
例えば佐藤太郎さんについて、佐藤さんの年齢、職業、住んでいる場所が、一つのtxt(csv)ファイルにまとめられていて、鈴木花子さんについての情報がまた別のファイルにまとめられている…
という時に、それぞれのファイルについて年齢と職業だけ抜き出して、
別のファイルにまとめ直したいときは、どうすればいいのでしょうか。

txtファイルは、100.txt, 101.txt,..., 125.txtのような、
数字+.txt で存在しています。

中身は、
名前, 佐藤太郎
年齢, 50歳
職業, 大工
住所, 埼玉

のような感じです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

つまりは、下記のようにまとめ直せばよいのでしょうか?
①年齢だけのファイル(age.txt)
②職業だけのファイル(business.txt)

前提として、ファイルの場所が同じフォルダに有ることとします。
(/home/user/xxxにあるとします。)

少し考えましたが、その条件だと、
pythonよりも圧倒的にLinuxコマンドのほうがお手軽ですね。
どういった環境なのかにもよりますが・・・。
windowsでもgrepをするツールがあります。
sakuraエディタなどでやれば一発でできます。

bash

1grep "年齢" *.txt > age.txt 2grep "職業" *.txt > business.txt

もし、python出やりたいなら、下記でできるはずです。
テストしていないのでエラーが出たら教えてください。

python3

1import os 2 3folder = "/home/user" 4age = [] 5business = [] 6for file in [f for f in os.listdir(folder) if os.path.isfile(os.path.join(folder, f))]: 7 with open(folder + "/" + file, "r") as f: 8 for line in f.readlines(): 9 if "年齢" in line: 10 age.append(line.split(",")[1]) 11 elif "職業" in line: 12 business.append(line.split(",")[1]) 13 14with open("./age.txt", "w") as f: 15 f.writelines(age) 16 17with open("./business.txt", "w") as f: 18 f.writelines(business)

投稿2019/05/06 13:14

編集2019/05/06 13:16
gyungyun545

総合スコア84

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sakuras

2019/05/08 03:13

ありがとうございます! とてもわかりやすくて助かりました!Linuxコマンドだと一発なのですね! 便利なのでこれから使って行きたいと思います。
guest

0

ベストアンサー

Python

1import glob 2import csv 3 4with open('out.csv', 'w', newline='', encoding='utf-8') as fout: 5 writer = csv.writer(fout) 6 7 # 処理ファイルを列挙 8 for path in glob.glob('./data/*.txt'): 9 with open(path, 'r', encoding='utf-8') as fin: 10 reader = csv.reader(fin) 11 lines = [row[1].strip() for row in reader] # 1列目のみをリストに 12 writer.writerow([lines[1],lines[2]]) # 年齢と職業の行

投稿2019/05/06 12:57

can110

総合スコア38262

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sakuras

2019/05/06 13:47

ご回答ありがとうございます! またまた質問をしてしまうのですが… 新しく作ったファイルを見るにはどうしたら良いのでしょうか。 全くの初心者で、本当に瑣末な質問をしてしまって申し訳ないのですが、 教えていただきたいです。
can110

2019/05/06 13:55

普段使っているテキストエディタで開いてください。 Windows環境であればメモ帳、Excelなどで開けます。
sakuras

2019/05/10 11:50

返信遅れてしまい、申し訳ありません。 無事開くことができました!ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問