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

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

新規登録して質問してみよう
ただいま回答率
85.35%
ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

Python

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

Q&A

解決済

1回答

420閲覧

python3 textファイル内データ削除した際に、改行が消えない

pystudent

総合スコア10

ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

Python

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

0グッド

0クリップ

投稿2020/05/13 11:06

前提・実現したいこと

テキストにデータを追加する(Add)、テキスト内のデータをリスト表示する(List)、テキスト内のデータを削除する(Delete)機能を作成しました。

データ削除機能で、指定した列番号のデータを削除することはできたのですが、テキスト内に「改行」が残ります。テキスト内データを全部消したとしても、改行が含まれるためテキストのデータサイズは0になりません。どうしたら改行まで消せますでしょうか?

気になること

コード内に以下の記載があります。ここの\nが原因なのかもしれませんが、テキストにデータを追記追加(Add)したときに改行を行いたいので、\nは消したくありません。

file = open("data.txt", "w") del mylist1[enterid] mylist3 = str("".join(mylist1) + "\n") #この\nが原因? file.write(mylist3)

該当のソースコード

python3

1import os 2import datetime 3path = "./data.txt" 4now = datetime.datetime.now() 5now = now.strftime("%A, %d. %B %Y %I:%M%p") 6 7 8keepAsking = True 9while keepAsking: 10 11 inputCheck = True 12 while inputCheck: 13 choice = input("Action: ") 14 15 if choice == "Add": 16 data1 = input("data1: ") 17 data2 = input("data2: ") 18 data3 = input("data3: ") 19 data4 = input("data4: ") 20 file = open("data.txt", "a") 21 file.write(data1 + ", " + data2 + ", " + data3 + ", " + data4 +", " + str(now) +"\n") 22 file.close() 23 24 elif choice == "List": 25 file = open("data.txt", "r") 26 for x, y in enumerate(file): 27 linebreak = y.strip() 28 comma = linebreak.split(",") 29 print(str(x+1) + ". " + comma[0] + " (" + comma[1] + ") - " + comma[2] + ", " + comma[3]) 30 print("Created date: " + comma[4] + ", " + comma[5]) 31 inputCheck = False 32 33 elif choice == "Delete": 34 idCheck = True 35 while idCheck: 36 enterid = input("ID: ") 37 enterid = int(enterid) - 1 38 file = open("data.txt", "r") 39 mylist1 = file.read().splitlines() 40 mylist2 = mylist1[enterid] 41 mylist2 = mylist2.strip() 42 mylist2 = mylist2.split(",") 43 print("You are about to delete " + mylist2[0] + "(" + mylist2[1] + ")") 44 file.close() 45 46 delete = input("Do you want to continue? ") 47 if delete == "Yes": 48 file = open("data.txt", "w") 49 del mylist1[enterid] 50 mylist3 = str("".join(mylist1) + "\n") #この\nが原因? 51 file.write(mylist3) 52 file.close() 53 idCheck = False 54 inputCheck = False 55 56 elif delete == "No": 57 idCheck = False 58 inputCheck = False 59 60print("END") 61 62

試したこと

strip()/rstrip()を使ってみましたがうまくいきませんでした。

補足情報(FW/ツールのバージョンなど)

python3.8.2

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

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

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

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

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

guest

回答1

0

ベストアンサー

ここの\nが原因なのかもしれませんが、

それが原因です。
空の時と、空でない時に処理を変えたければ条件分岐するしか無いです。

あと、そこをstr()で囲う意味は無いです。

投稿2020/05/13 11:14

otn

総合スコア85901

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

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

pystudent

2020/05/13 11:27

早速のご回答ありがとうございました。またstrのご指摘もありがとうございます。修正したいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問