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

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

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

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

Q&A

1回答

212閲覧

python 一致条件

aaa12

総合スコア18

Python

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

0グッド

0クリップ

投稿2017/10/25 07:01

python

1#!/usr/bin/env python 2 3hoge_dict = {} 4 5for line in f1: 6 hoge_dict[line.split(';')[0]] = line.rstrip() 7 hoge_dict[line.split('\n')[0]] = line2.rstrip() 8for line in f2: 9 line = line.rstrip() 10 line2 = line2.rstrip() 11 if line in hoge_dict: 12 f3.write(str(hoge_dict[line]) + '\n') 13 print(hoge_dict[line])

ファイルf1
123456;764365
765472;825695
746174;956798
のようなデータが10万近く入っています

ファイルf2
467678
123456
758989
のようなデータが10万近く入っています

このコードをファイル1の;で区切られた数字の両方がファイル2と一致した場合ファイル1の内容が出力されるように作りましたが、なかなかうまくいきません。
やり方を教えてほしです。また、出力した内容を別のtxtファイルに書く方法も合わせて知りたいです。
上記のコードのようにforぶんの中に入れてしまって大丈夫ですか?

コードの上の部分が大きくなってしまっているのは気にしないでください。

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

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

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

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

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

LouiS0616

2017/10/25 07:45

line2が何かよくわかりません。line2の登場する二行を消したらある程度正常に動きそうに見えますが。
aaa12

2017/10/25 10:25

line2は自分で作ってみた新しい置き換えです。line2を消すと右側を読んでくれなくなるのでは、、、?書いた自分でもちゃんとできてるのかわかってないです涙
aaa12

2017/10/25 10:51

別のところで新しく質問しなおしました。
guest

回答1

0

たぶんこれで動く。ポイントはファイルf2を先に処理してしまう、その時に後の検索オーダーを気にしてlistではなくsetを使用する、ファイルをfor文で回すと改行コードが付いたままになるので適宜stripする、print関数はendやfileといった引数で動きを変えられる、といったところです。

python

1with open('ファイルf2') as f2: 2 target = set(line.strip() for line in f2) 3 4with open('ファイルf1') as f1, open('ファイルf3', 'w') as f3: 5 for line in f1: 6 v1, v2 = line.strip().split(';') 7 if v1 in target and v2 in target: 8 print(line, end='') 9 print(line, file=f3)

投稿2017/10/25 07:39

YouheiSakurai

総合スコア6142

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

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

aaa12

2017/10/25 10:22

ありがとうございます。 print(line, end='')ここでエラーが出てしまいます
mkgrei

2017/11/08 06:39

どのようなエラーでしょう? end近くのSyntaxErrorであれば、pythonのバージョンによる可能性が高いです。 python3.xを使っていれば構文上問題はなさそうです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問