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

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

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

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

Q&A

解決済

2回答

294閲覧

Pythonでテキストファイルをreadした後、特定の単語を含む行を除いて処理したい

mah3

総合スコア17

Python

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

1グッド

0クリップ

投稿2018/12/25 05:02

編集2019/01/16 04:21

Pythonを使ってテキストファイルをreadした後、特定の単語を含む行を除いて処理したいのですが...
if elseかなと思ったのですがうまく行かなくて困ってます…

読み込むテキストファイルはこんな感じです
AAA(要) 1....
XXX(不要) 1....
AAA 2....
XXX 2....
.
.
.
BBB(要) 547.....
XXX(不要) 547....

file = open('test.txt','r') string = file.readline() string = file.readline() x = [0]*10000 y = [0]*10000 z = [0]*10000 array_number = [0]*10000 #配列番号 tag = [0]*10000 #物質名 atom = [0]*10000 #原子名 chain = [0]*10000 #鎖 #最初の読み込み------------------------------------ cnt = 0 while string: cnt = int(string[6:11],10) if string[36] == ' ': string = file.readline() continue x[cnt] = float(string[31:38]) y[cnt] = float(string[39:46]) z[cnt] = float(string[47:54]) array_number[cnt] = float(string[22:26]) tag[cnt] = string[17:20] atom[cnt] = string[13:16] chain[cnt] = string[21] string = file.readline() print('READ FINISH.');
tachikoma👍を押しています

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

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

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

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

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

tachikoma

2018/12/25 05:05

例えば「不要」を含む行を除きたいのでしょうか。
otn

2019/01/16 05:17 編集

うまくいかないとうそのコードを載せてください。
mah3

2018/12/25 05:15

import math import itertools import collections #all_coordinates----------------------------------- file = open('test.txt','r') string = file.readline() string = file.readline() x = [0]*10000 y = [0]*10000 z = [0]*10000 array_number = [0]*10000 #配列番号 tag = [0]*10000 #物質名 atom = [0]*10000 #原子名 chain = [0]*10000 #鎖 #最初の読み込み------------------------------------ cnt = 0 while string: cnt = int(string[6:11],10) if string[36] == ' ': string = file.readline() continue x[cnt] = float(string[31:38]) y[cnt] = float(string[39:46]) z[cnt] = float(string[47:54]) array_number[cnt] = float(string[22:26]) tag[cnt] = string[17:20] atom[cnt] = string[13:16] chain[cnt] = string[21] string = file.readline() print('READ FINISH.'); #読み込み完成すると表示 です。 if elseは除いてある元のプログラムです
tachikoma

2018/12/25 05:17

コメントだとインデントが崩れてしまうので、コードは元の質問に追記して下さいませ。
mah3

2018/12/25 05:20

追記しました!
can110

2018/12/25 15:52

質問本文にコードブロック(```)で囲んだうえで追記ください。質問は編集できます。
mah3

2019/01/16 04:23

ログインが出来ず、返信が遅くなり申し訳ございません。 該当箇所のコードを追記しました。 宜しくお願い致します。
guest

回答2

0

ベストアンサー

'XXX' in stringXXXを含むか判定できます。
あるいはstring.startswith('XXX')XXXで始まるかを判定できます。

Python

1 2# test.txt 3""" 4AAA 1 5XXX 2 6BBB 3 7XXX 4 8CCC 5 9""" 10file = open('test.txt','r') 11string = file.readline() 12 13while string: 14 is_skip = False 15 16 if 'XXX' in string: # XXXを含む 17 #if string.startswith('XXX'): # XXXで始まる 18 is_skip = True 19 20 # その他のスキップ条件があれば… 21 #if string[36] == ' ': 22 # is_skip = True 23 24 if not is_skip: 25 print(string.rstrip()) # 何らかの処理 26 27 string = file.readline()

投稿2019/01/16 04:46

can110

総合スコア38262

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

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

0

readで取り込むのであれば、一度 split(\n) などで一行ごとのlistにして、
forでそのlistを回しつつ、特定の文字列が含まれていないかをstringのcountで判断し、
さらに別のlistにappendする形で実現できるんじゃないかと思います。

python

1other_list = list() 2for line in text_data_lines: 3 if line.count("XXX") == 0: 4 other_list.append(line)

投稿2018/12/25 17:19

iTach

総合スコア74

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問