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

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

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

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

Q&A

解決済

3回答

1037閲覧

Python 3.7.1でテキストファイルの特定の文字を含む行を削除したい

mah3

総合スコア17

Python

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

0グッド

1クリップ

投稿2018/12/18 05:04

テキストファイルに余計な行があり削除したくてPythonを使って処理しようとしたのですがうまく行かず...

テキストファイルはこんな感じです

ABC...
XXX(削除したい)
ABC...
XXX(削除したい)
ABC...

と1行ごとに入っています。

宜しくお願い致します。

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

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

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

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

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

guest

回答3

0

ベストアンサー

ファイルを読み込んで、リスト化して、
そのリストを1つ飛ばしで同じファイルに書き込めばよいかと思います。

python

1with open("./sample.txt", "r", encoding="utf-8") as file_obj: 2 file_lines = file_obj.readlines() 3 4with open("./sample.txt", "w", encoding="utf-8") as file_obj: 5 file_obj.writelines(file_lines[::2])

また、vimなどのエディタで開けるほどの大きさであれば、
マクロ的なことをすれば割と簡単に整形できると思いますよ。

bash

1vim sample.txt

vimを開いた状態で、以下キーを入力。
qqjddq@q100@q など。

1. レコーディングモードになり、以下動作を覚えさせる:qq - 1行下(削除対象の行)に移動:j - 1行削除:dd 2. レコーディング終了:q 3. レコーディングしたものを再現:@q 4. 繰り返し:<繰り返したい数>@q

投稿2018/12/18 18:35

iTach

総合スコア74

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

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

mah3

2018/12/25 04:38

ありがとうございました!! 上手くいきました!
guest

0

ファイルを直接修正する、というのは実際には無理ですんで、
こういう手順ではどうでしょう

・元ファイルから1行づつ読んで、削除しない行を別ファイルに書き込んでいく
・全行繰り返し
・元ファイルを別の名前にリネーム
・新ファイルを元ファイルの名前にリネーム
・元ファイルを削除

これが面倒だと言うなら、

・元ファイルを一括してリストにでも読み出し
・削除する行をリストから削除
・ファイルを新規作成し、書き出し

というのでどうぞ

投稿2018/12/18 05:18

y_waiwai

総合スコア87774

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

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

mah3

2018/12/18 05:36

ありがとうございます! やってみます!!!
guest

0

一行ずつ読み込み特定の文字列を含まない行の文字列を返す関数を作るといいと思います

python3

1path = 'fileのpath' 2 3def main(): 4 with open(path, mode='r') as f: 5 for line in f.readlines(): 6 if 'いらない文字列' in line: 7 pass 8 else: 9 yield line 10 11with open(path, mode='w') as wf: 12 for wi in main(): 13 wf.write(wi)

試してませんが
多分こうです
こうすればいらない文字列の入った文字列をかきこみません

投稿2018/12/26 00:02

編集2018/12/26 00:05
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

mah3

2019/01/09 04:15

ご回答ありがとうございます。 質問なのですが'fileのpath'には何を入力すればいいでしょうか...
退会済みユーザー

退会済みユーザー

2019/01/12 09:28

テキストファイルのパスです
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問