2016-07-30 6 views
1

別のプロジェクト用のトピックのリストを作成しようとしていますが、トピックをTopics.txtに保存しています。しかし、ファイルにトピックが格納されている場合、重複するトピックは望ましくありません。だから私の話題を私のTopics.txtファイルに保存するときには、私もDuplicates.txtファイルに保存します。私がしたいのは、トピックがDuplicates.txtにある場合、Topics.txtにトピックを追加しない条件文を作成することです。私の問題は、トピックがDuplicates.txtにリストされているかどうかを確認できる条件文をどのように作成できるかわかりません。 「音楽」などのキーワードをスキャンして「エレクトロミュージック」に「音楽」という単語が含まれていることを確認すると、問題が発生することがあります。ファイルのデータを重複してチェックする(Python)

Entry = input("Enter topic: ") 
Topic = Entry + "\n" 
Readfilename = "Duplicates.txt" 
Readfile = open(Readfilename, "r") 
Readdata = Readfile.read() 
Readfile.close() 
if Topic not in Duplicates: 
    Filename = "Topics.txt" 
    File = open(Filename, "a") 
    File.append(Topic) 
    File.close() 
    Duplicate = Topic + "\n" 
    Readfile = open(Readfilename, "a") 
    Readfile.append(Topic) 
    Readfile.close() 
+0

ようなソリューションにつながる行毎にファイルを読み込むことができますか? – cssko

+0

どのようにトピックを保存しますか? 1行に1つ? – janbrohl

+2

プレーンテキストファイルが実際にあなたのニーズに合っているかわかりません。 SQLiteテーブルには別個の強制があり、キーワード検索を実行することもできます –

答えて

1

あなたはいくつかの例やサンプルコードを追加することができ、この1

Entry = input("Enter topic: ") 
Topic = Entry + "\n" 
Readfilename = "Duplicates.txt" 
found=False 
with open(Readfilename, "r") as Readfile: 
    for line in Readfile: 
     if Topic==line: 
      found=True 
      break # no need to read more of the file 

if not found: 
    Filename = "Topics.txt" 
    with open(Filename, "a") as File: 
     File.write(Topic) 

    with open(Readfilename, "a") as Readfile: 
     Readfile.write(Topic) 
+0

トピックの大文字と小文字の違いを除外するためにこれをどのように変形できますか? – Capattax

+0

@Capattaxは[文字列メソッド](https://docs.python.org/3/library/stdtypes.html#string-methods)を見ています。これらは多くの便利なことを行うことができます。通常、文字列は大文字と小文字を区別して比較されます( '' a "==" A "'は 'False'と評価されます) – janbrohl

0

トピックを1組で保存できます。セットはユニークなアイテムのコレクションです。

topics = {'Banjo', 'Guitar', 'Piano'} 

あなたは使用して、会員のためにチェックすることができます。

>>> 'Banjo' in topics 
True 

あなたは、Python 3 .add()

topics.add('Iceskating') 
>>> topics 
set(['Banjo','Guitar', 'Piano', 'Iceskating']) 

を経由してセットに新しいものを追加設定しhere上のドキュメント。セットに関するチュートリアルページはhereです。

+0

これは1つのファイルの重複をチェックするのに便利ですが、 'Topics.txt'にトピックを追加する2つのプログラムがあります。最初のプログラムはトピックを手動で追加し、もう一方のプログラムはトピックのページをクロールします。だから、私は2つのセット、それぞれのプログラムのための1つのセットを持っている場合、彼らはそれぞれのセットに重複を追加します。彼らは、他のセットから重複を識別することができませんでした。 – Capattax

+0

セットに関する素晴らしい点は、元のデータに重複があった場合に削除されることです。 '' one ''、 'two'、 'three' 'というリストを持ち、それをセットにコピーすると、そのセットは '[' one '、' two '、' three ' ] '。 – cssko

+0

これを追加するには、単純な.txtファイルを使用してデータを保存することが危険にさらされているようです。私は、SQLiteテーブルを使用する前の2番目の@ cricket_007sの提案に行くつもりです。 – cssko

関連する問題