🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

922閲覧

条件付きでファイル内行を抽出

nomonomo

総合スコア5

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2019/09/30 11:38

編集2019/10/02 03:34

pythonを使っています。
ファイル内"ATOM"で始まる行で"CA"," A "を含む行を抽出したいです。ただし、"TER"で始まる行が現れた場合そこで抽出を止めたいです。

発生している問題・エラーメッセージ

line 23, in <module> for Atom, line in preAtom: ValueError: too many values to unpack (expected 2)

該当のソースコード

python

1with open(path2 + entfiles[i],"rt") as p: 2 preAtom=[line for line in p if line.startswith("ATOM") and "CA"in line and " A " in line] 3 for Atom, line in preAtom: 4 if "TER" in line: 5 break

試したこと

with open(path2 + entfiles[i],"rt") as p:
preAtom=[line for line in p if line.startswith("ATOM") and "CA"in line and " A " in line]
が動くことは確認しています。TERで始まる行が出現した場合止めることができませんでした。

補足情報(FW/ツールのバージョンなど)

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

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

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

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

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

nandymak

2019/10/01 04:06

コードの提示のやり方が間違っています。「<code>」ボタンを押して「```」の間に記述してください。 プレビュー画面で確認してから投稿するようにしてください。
nomonomo

2019/10/02 03:35

ご指摘ありがとうございます。以後気をつけます!
guest

回答1

0

ベストアンサー

内包表記に拘る必要は無いのでは。

Python

1pre_atom = [] 2for line in p: 3 if 'TER' in line: 4 break 5 6 if line.startswith('ATOM') and 'CA' in line and ' A ' in line: 7 pre_atom.append(line)

投稿2019/09/30 12:22

LouiS0616

総合スコア35668

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

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

nomonomo

2019/10/02 03:32

ご回答ありがとうございます! ご教授いただきましたよう実行したのですが、エラーとなってしまいました。pre_Atomリストの中身を見てみると[]となっており、ATOMで始まる行が要素に追加されていませんでした。どのように変更すればよいか教えていただけると助かります
nomonomo

2019/10/02 03:58

連投すみません。 ご教授くださいましたコードにて"TER"に関する部分を削除するとリストが構成されていたので、他部分のコードやテキストの問題かもしれません。今一度考えてから回答いたします。失礼しました。
LouiS0616

2019/10/02 04:18

『"TER"で始まる行』ですから、line.startswith('TER') の方が良いかもしれません。
nomonomo

2019/10/03 10:13

if line.startswith("TER"): break としたら実行できました!本当にありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問