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

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

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

Q&A

解決済

3回答

467閲覧

txtを読み取り、選択された複数行をコピーしたいです。

SYIC9

総合スコア6

0グッド

0クリップ

投稿2022/01/13 04:55

前提・実現したいこと

a.txtを読み取って1行目から5行目を消したものを、b.txtに書き込みたいです。

該当のソースコード

python

myfile = open('C:/Users/Documents/a.txt, 'r', encoding="utf-8") all_lines = myfile.readlines() myfile.close() try: all_lines.pop(0) except: print('Error') all_lines = ''.join(all_lines) myfile = open('C:/Users/Documents/b.txt', 'w',encoding="utf-8") myfile.write(all_lines) myfile.close()

試したこと

1行だけなら消すことはこのプログラムでできているのですが、複数行消すことができないです。

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

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

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

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

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

SYIC9

2022/01/13 07:09

例えば11行目から16行目を消したいとかでしたらどうすればいいですか? 回答お願いします
guest

回答3

0

1行づつ読んで、1行づつ書き込むようにしとけば、
最初の5行を読み飛ばすだけでいけます

投稿2022/01/13 05:12

y_waiwai

総合スコア87774

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

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

0

元のコードのtry節の中をafter_line6 = all_lines[5:]に置き換えた格好です。
melianさんのようにwithを使ったほうが読みやすくなるとは思います。

python3

1myfile = open('C:/Users/Documents/a.txt, 'r', encoding="utf-8") 2all_lines = myfile.readlines() 3myfile.close() 4try: 5 after_line6 = all_lines[5:] 6except: 7 print('Error') 8write_lines = ''.join(after_line6) 9myfile = open('C:/Users/Documents/b.txt', 'w',encoding="utf-8") 10myfile.write(write_lines) 11myfile.close()

投稿2022/01/13 05:17

jeanbiego

総合スコア3966

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

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

SYIC9

2022/01/13 05:51

例えば11行目から16行目を消したいとかでしたらどうすればいいですか? 回答お願いします
guest

0

ベストアンサー

python

1N = 5 2with open('C:/Users/Documents/a.txt', 'r', encoding='utf-8') as myfile: 3 all_lines = myfile.readlines() 4 5if len(all_lines) <= N: 6 print('Error') 7else: 8 all_lines = ''.join(all_lines[N:]) 9 with open('C:/Users/Documents/b.txt', 'w',encoding='utf-8') as myfile: 10 myfile.write(all_lines)

投稿2022/01/13 05:13

melian

総合スコア19809

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

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

SYIC9

2022/01/13 08:12

例えば11行目から16行目を消したいとかでしたらどうすればいいですか? 回答お願いします
melian

2022/01/13 08:32

テキストの中身が16行以上あるという前提でしたら、1行目から10行目(all_lines[:10]) と 17行目以降(all_lines[16:]) を書き出します。 all_lines = ''.join(all_lines[:10]+all_lines[16:])
SYIC9

2022/01/14 05:48

もっとすっきりしたプログラムが書けました! ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問