0

私は自分のコードの助けを探しています。これは単純な python コードですが、私はこれが初めてなので、少しトリッキーでした..

私がやりたいことは、.txt ファイルを取得し、それを読み取り、いくつかの文字列と比較して、.txt ファイルのどの単語に私が求めている文字列が含まれていないかを言うことです。次に例を示します。

txt ファイル: ABCD AABC DDCA CDAA CDAB EEGF GFFE

そして私の文字列制限: S= ['AA', 'BB', 'CC', DD']

したがって、出力は次のようになります。 ABCD CDAB EEGF GFFE

他のものは、S の 1 つ以上の文字列と一致するため、表示できません。さて、私のコードと私の問題です。

次のコードがあります。

import string

ins = open( "prueba.txt", "r" )
array = []

for line in ins:
    array.append( line )
ins.close()

s = ''.join(array)
a= s.split()
c = ['AA', 'BB','CC', 'DD','EE', 'FF','GG', 'HH','II', 'JJ','KK', 'LL', 'MM', 'NN','OO', 'PP','QQ', 'RR','SS', 'TT','UU', 'VV', 'WW', 'XX','YY', 'ZZ']

i=0
j=0
f= c[j]

for j in range(0,len(a)):
     if a[i].find(f) != -1:
        print 'Is in:' , a[i]
        i=i+1
     else:
        print 'Is not in:' , a[i]
        i=i+1

そして、次の txt ファイル: AAC ABC ACC ADD FAA

私が持っている出力は次のとおりです: 含まれています: AAC 含まれていません: ABC 含まれていません: ACC 含まれていません: ADD 含まれています: FAA

このことからわかることは、私のコードが本来あるべき方法で繰り返されていないため、正しい答えが出力されていないということです。

私はそれを修正するために多くのことを試みてきましたが、解決策にたどり着けないので、誰かがこれを手伝ってくれるなら、本当に感謝しています!

どうもありがとう!

4

4 に答える 4

0

これを試して:

s = ['AA', 'BB', 'CC', 'DD']
mInput = ['ABCD','AABC','DDCA','CDAA','CDAB','EEGF','GFFE']

anti_res = []

for e in mInput:
    for i in s:
        print i
        if i in e:
            if e not in anti_res:
                anti_res.append(e)

res = [e for e in mInput if e not in anti_res]
print res
于 2013-11-10T19:15:56.417 に答える
0

コードに関するいくつかの問題。すべての AA、BB、CC、EE 値に対してチェックする前に i を更新します。これが、すべての制限を適用できない理由です。

私は次のコードを書きましたが、それはあなたが必要としているものかもしれません。試してみて、さらに説明が必要な場合はお知らせください。

import string

ins = open( "prueba.txt", "r" )
array = []

for line in ins:
    array.append( line )
ins.close()

s = ''.join(array)
a= s.split()
c = ['AA', 'BB','CC', 'DD','EE', 'FF','GG', 'HH','II', 'JJ','KK', 'LL', 'MM', 'NN','OO', 'PP','QQ', 'RR','SS', 'TT','UU', 'VV', 'WW', 'XX','YY', 'ZZ']

i=0
j=0


for i in range(0,len(a)): #go through all the items from the input list
  found=False
  for j in range(0,len(c)): #check every item against every restriction
       f=c[j]
       if a[i].find(f) != -1:
          print 'Is in:' , a[i]
          found=True #remember if we found a restriction and stop the loop
          break
  if(found==False): print 'Is not in:' , a[i] #if by the end of the loop no restriction was found tell me that nothing was found
于 2013-11-10T19:25:26.513 に答える