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

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

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

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

Q&A

3回答

4814閲覧

Pythonのエラー ValueError: is not in list

mah3

総合スコア17

Python

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

0グッド

0クリップ

投稿2019/01/22 04:48

以前こちらで回答して頂いた(https://teratail.com/questions/165782)コードを組み込んで動かしてみると、今まで出なかった

index = array_number.index(intron_number) #intorn分子の最初の通しナンバー
ValueError: 47 is not in list

というエラーが出てしまいました...

47というのが以下のコード中のintron位置になります。
コードの初めにある部分が先ほどの教えていただいたところです。
そこで処理された4nua.txtには47も存在しています

宜しくお願い致します。

Python

1file = open('4nua.txt','r') 2string = file.readline() 3 4while string: 5 is_skip = False 6 7 if 'ANISOU' in string: # ANISOUを含む 8 #if string.startswith('ANISOU'): # ANISOUで始まる 9 is_skip = True 10 11 #if string[36] == ' ': 12 # is_skip = True 13 if not is_skip: 14 print(string.rstrip()) 15 16 string = file.readline() 17 18x = [0]*10000 19y = [0]*10000 20z = [0]*10000 21array_number = [0]*10000 #配列番号 22tag = [0]*10000 #物質名 23atom = [0]*10000 #原子名 24chain = [0]*10000 #鎖 25 26#最初の読み込み------------------------------------ 27cnt = 0 28while string: 29 cnt = int(string[6:11],10) 30 if string[36] == ' ': 31 string = file.readline() 32 continue 33 34 x[cnt] = float(string[31:38]) 35 y[cnt] = float(string[39:46]) 36 z[cnt] = float(string[47:54]) 37 array_number[cnt] = float(string[22:26]) 38 tag[cnt] = string[17:20] 39 atom[cnt] = string[13:16] 40 chain[cnt] = string[21] 41 42 string = file.readline() 43 44print('READ FINISH.'); #読み込み完成すると表示 45 46#input_intron---------------------------------------- 47 48print('intronの数は?') 49intron_kazu = int(input()) #intron個数 50 51x_intron = []*(intron_kazu) 52y_intron = []*(intron_kazu) 53z_intron = []*(intron_kazu) 54list_intron = [] #intronの通しナンバー 55 56print('intron位置を全て入力して') 57print('例:入力➡ENTER➡入力➡ENTERの繰り返し') 58for i in range(intron_kazu): 59 60 intron_number = int(input()) #intronの残基番号を入力 61 list_intron.append(intron_number) 62 63 index = array_number.index(intron_number) #intorn分子の最初の通しナンバー 64 count = array_number.count(intron_number) #intron分子を構成する原子数 65 intron_finish = index + count #(intron原子の最後の通しナンバー + 1)

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

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

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

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

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

guest

回答3

0

Python

1[].index(1)

でも同様の下記のエラーが出ます

Python

1Traceback (most recent call last): 2 File "<pyshell#1>", line 1, in <module> 3 [].index(1) 4ValueError: 1 is not in list

つまり、array_numberの中に47という値が入っていないことになります

投稿2019/01/22 05:24

yamato_user

総合スコア2321

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

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

mah3

2019/01/22 06:48

ご回答ありがとうございます。 なるほど... また考えてみます! ありがとうございました!
guest

0

readline()がイテレータであることが分かれば一歩進めそうな気がしました。

今回の場合、readline()は、「ファイル(今回の場合、file)を読み込み次の行に移動する」という性質を持っています。
何が言いたいかコメントで書いたので確認していただければと。(うるさくて申し訳ないです)

Python3

1 2file = open('4nua.txt','r') 3string = file.readline() 4 5while string: 6 7 色々と処理 8 9 string = file.readline() 10 11# 上記のwhile文を抜けた時点でファイルの読み込みは終了している!! 12色々と初期化 13 14#最初の読み込み------------------------------------ 15# ファイルの読み込みは終了してしまってるので、この下のwhile文には入ってきていない!!(気がします) 16cnt = 0 17while string: 18 19 色々と処理 20 21 string = file.readline() 22 23# 2つ目のwhile文では何もしていないまま・・・!! 24print('READ FINISH.'); #読み込み完成すると表示

投稿2019/01/22 05:51

_TM

総合スコア173

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

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

mah3

2019/01/22 06:48

ご回答ありがとうございます。 細かく書いていただきありがとうございます!!! こちらを参考にして考えてみます。 ありがとうございました!
_TM

2019/01/22 06:54

頑張ってください!(これは余談ですが、「pandasというライブラリを用いる」もしくは、「split()という関数を使う」で、もう少し簡単にいくかも?という気もしました。余裕があればご検討ください)
guest

0

当てずっぽうですが、ANISOU までは必要なデータ以外の行だと仮定します。
そうすると、

python

1while string: 2 is_skip = False 3 4 if 'ANISOU' in string: # ANISOUを含む 5 #if string.startswith('ANISOU'): # ANISOUで始まる 6 is_skip = True 7 8 #if string[36] == ' ': 9 # is_skip = True 10 if not is_skip: 11 print(string.rstrip()) 12 13 string = file.readline()

python

1while 'ANISOU' not in string: 2 print(string.rstrip()) 3 string = file.readline()

に変えると、どうでしょう。

投稿2019/02/05 13:40

編集2019/02/05 13:44
kts_h

総合スコア207

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問