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

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

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

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

Q&A

解決済

3回答

15089閲覧

Pythonでテキストファイルの2行目以降の文章を読み込みたい

mrgishi

総合スコア17

Python

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

0グッド

2クリップ

投稿2017/12/30 04:48

編集2017/12/30 05:06

前提・実現したいこと

Pythonでテキストファイルを読み込む際、テキストファイルの1行目にはメモを残しておきたいので、2行目から内容を読み込みたいと考えています。

そのためのスクリプトを分かる方いたら、ご教授いただけますでしょうか?

*readlinesで各行に読み込むのではなく、2行目以降全てを読み込む。
*2行目以降を各行書き出して2行目以降を書き出すのではなく、例えば2行目以降の内容を変数に代入したい。

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

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

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

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

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

guest

回答3

0

python

1with open("memo.txt") as f: 2 next(f) 3 for line in f: 4 print(line.strip("\n"))

pythonではファイルオブジェクトをイテレータとして使うことができるので、next(f)でヘッダを飛ばせます。

--追記--
後で扱いやすくするなら、リストに格納することもできます。

python

1contents = [] 2 3with open("memo.txt") as f: 4 next(f) 5 for line in f: 6 contents.append(line.strip("\n"))

投稿2017/12/30 04:56

編集2017/12/30 07:13
Udomomo

総合スコア1524

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

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

退会済みユーザー

退会済みユーザー

2017/12/30 05:13

ファイルオブジェクトをそのままイテレーション出来たんですね。 勉強になりました。
mrgishi

2017/12/30 06:02

ご回答ありがとうございます!こちらのコードで2行目以降の文章を出力できました! この出力した内容全体を変数に代入することはできますでしょうか?
Udomomo

2017/12/30 07:13

追記しました。例えばリストなどに入れておくと、後で行ごとのデータを抜き出しやすくなります。
mkgrei

2017/12/30 11:03

readlinesで一気に読みださずに、あえて1行ずつ読みだして、リストに収めるのはちぐはぐに感じてしまうのですが、何か特別な利点があるのであればぜひご教授願いたくございます。
Udomomo

2017/12/30 12:10

よく考えると、またリストに収めるのは確かに意味がないですね。 巨大なファイルの1行ごとに処理を行いたい場合など、全部一気に読み込むとメモリを圧迫しうるときに使うのが良いと思います。
mkgrei

2017/12/31 02:39 編集

コメントをありがとうございます。 メモリにのらない時に実行速度を犠牲に逐次読み込むのは理解できます。 納得です。 あえてコードが遅くなるように書く需要について考えてたら、 http://steps.dodgson.org/bn/2005/08/21/ この記事を思い出しました。
guest

0

python

1File = open("directory", "rt") 2lines = File.readlines()[1:]

readlinesのデータ構造はリストですのでスライスを使えば2行目以降を取り出す事が出来ます。

投稿2017/12/30 04:54

編集2017/12/30 05:07
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

自己解決

ご回答ありがとうございました!
なんとかやりたいことができましたので、コード添付しておきます。

こちらにもご協力いただきました。
Python|for文で出力した内容をテキストとして変数に代入したい
https://teratail.com/questions/107044

python

1import sys 2import io 3# 文字列IOストリームを初期化して、f に代入 4with io.StringIO() as f: 5 # 標準出力を f に切り替える。 6 sys.stdout = f 7 # テキストファイルの内容(2行目以降)を、printで出力 8 with open('sample.txt') as i: 9 next(i) 10 for line in i: 11 print(line.strip("\n")) 12 # f に出力されたものを文字列として取得 13 text = f.getvalue() 14 # 標準出力をデフォルトに戻して text を表示 15 sys.stdout = sys.__stdout__ 16 print(text) 17

投稿2017/12/30 09:51

mrgishi

総合スコア17

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問