2016-06-21 1 views
0

文字列が存在し、その隣に文字列がある場合、ファイルをチェックインする方法。私はvalidationforvoteの4桁の番号(変数)を格納し、ファイルにvalidationforvoteの横の「投票」との文字列があることを確認したいのです別の文字列を含む文字列がファイルに存在する場合、ファイルをチェックインする方法はありますか?

with open ('CTF.txt', 'r') as myfile: 
     strings = (validationforvote, "voted") 
      for line in myfile: 
       if any(s in line for s in strings): 
       print "you cannot vote twice" 
myfile.close() 

: は正確には、私は次のコードを持っています。現在、私はファイルを持っている:I入力再び9779 validationforvoteとして場合

9779 voted 
8568 voted 

、これが存在する場合と横に「投票」がある場合は、このファイルを検索する必要があります。はいの場合、ユーザーに伝える必要があります。投票を2回行うことはできません。それがあるべきよう 現在のモードのコードが実行されていません:現在

+0

を検証番号をこのファイルに格納し、ユーザがそれを投票した後に投票してマークする。 2番目の入力の後で、validationforvoteがすでに存在しているかどうかを確認してください。 – Venkata

+0

'strings =(validationforvote +" voted ")'? – 0range

答えて

0

あなたはいくつかの問題を持っている:=が、その後、あなたは

+1

新しい文字列書式 "{}"を使用しました.format(validationforvote) – Delioth

-1

いずれか validationforvote またはが「投票」するたびに「投票」があることを意味ライン - である場合、それは印刷しましょう、それが印刷さ。あなたの条件をもっとする必要があります:

if (" ".join(strings) in line): 

だから、=を探すために、すなわち"9779 voted"正確な文字列として、あなたが探しているものを構築し、その後、それが行にある場合は(あなたも行うことができます見ています

import re 
with open ('CTF.txt', 'r') as myfile: 
    result=re.search(str(validationforvote)+' voted$', myfile.read()) 
    if result: 
     print "you cannot vote twice" 
    myfile.close() 
0
あなたは正規表現操作を使用しようとすることができ

)改行を考慮する必要があります。

まずvalidationforvotevotedが期待どおり機能し、あなたのコードを妨げているライン、であるならば、あなたのif文がチェックされていることです。

第2に、with open(...) as myfileを使用してファイルを開くと、ブロックの後にファイルを閉じる必要はありません。

第3に、validationforvoteを格納するためにタプルを使用し、リテラル'voted'は少し不要です。

クリーニング物事ビットは、次のように使用することができます。

with open ('CTF.txt', 'r') as myfile: 
    for line in myfile: 
     if line.strip() == "{} voted" % (validationforvote): 
      print "you cannot vote twice" 
0

あなたのデータは、ちょうどあなたの例のように構成されている場合は、これを行うことができます:私はvalidationforvoteを使用して

with open("myfile") as open_file: 
    # read the file and split it on each newline 
    f=open_file.read().split('\n') 

for line in f: 
    # check if any of the lines start with validationforvote 
    # and has allready voted 
    if validationforvote == line[:4] and 'voted' == line[5:]: 
     print("You cannot vote twice!") 
     break 
関連する問題