このコードは、2つのテキストファイルを開いて読み取り、両方に単語が存在する場合に一致する必要があります。一致は、「SUCESS」を印刷し、その単語をtemp.txtファイルに書き込むことで表されます。
dir = open('listac.txt','r')
path = open('paths.txt','r')
paths = path.readlines()
paths_size = len(paths)
matches = open('temp.txt','w')
dirs = dir.readlines()
for pline in range(0,len(paths)):
for dline in range(0,len(dirs)):
p = paths[pline].rstrip('\n').split(".")[0].replace(" ", "")
dd = dirs[dline].rstrip('\n').replace(" ", "")
#print p.lower()
#print dd.lower()
if (p.lower() == dd.lower()):
print "SUCCESS\n"
matches.write(str(p).lower() + '\n')
listac.txtは次のようにフォーマットされます
/teetetet
/eteasdsa
/asdasdfsa
/asdsafads
.
.
...etc
path.txtは次のようにフォーマットされます
/asdadasd.php/asdadas/asdad/asd
/adadad.html/asdadals/asdsa/asd
.
.
...etc
したがって、ドットの前の最初の/ asadasda(paths.txt内)を取得するために、split関数を使用します。問題は、単語が一致していないように見えることです。各IFステートメントの前に各比較を出力しましたが、それらは等しいです。文字列を比較する前にPythonが行うことは他にありますか?
=======
助けてくれてありがとう。あなたが提案したように、私はコードをクリーンアップしたので、次のようになりました:
dir = open('listac.txt','r')
path = open('paths.txt','r')
#paths = path.readlines()
#paths_size = len(paths)
for line in path:
p = line.rstrip().split(".")[0].replace(" ", "")
for lines in dir:
d = str(lines.rstrip())
if p == d:
print p + " = " + d
どうやら、2番目のforループに入る前にpを宣言して初期化すると、将来の比較に違いが生じます。2番目のforループ内でpとdを宣言すると、機能しませんでした。その理由はわかりませんが、誰かが知っているなら、私は聞いています:)
再度、感謝します!