テキストファイルに余計な行があり削除したくてPythonを使って処理しようとしたのですがうまく行かず...
テキストファイルはこんな感じです
ABC...
XXX(削除したい)
ABC...
XXX(削除したい)
ABC...
と1行ごとに入っています。
宜しくお願い致します。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答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
総合スコア74
0
ファイルを直接修正する、というのは実際には無理ですんで、
こういう手順ではどうでしょう
・元ファイルから1行づつ読んで、削除しない行を別ファイルに書き込んでいく
・全行繰り返し
・元ファイルを別の名前にリネーム
・新ファイルを元ファイルの名前にリネーム
・元ファイルを削除
これが面倒だと言うなら、
・元ファイルを一括してリストにでも読み出し
・削除する行をリストから削除
・ファイルを新規作成し、書き出し
というのでどうぞ
投稿2018/12/18 05:18
総合スコア87774
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
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
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/12/25 04:38