我有這個代碼應該打開並閱讀兩個文本文件,並匹配兩個字中都存在的字。通過打印「SUCESS」並將該單詞寫入temp.txt文件來表示匹配。作爲無法比較Python中的字符串
/teetetet
/eteasdsa
/asdasdfsa
/asdsafads
.
.
...etc
paths.txt被格式化爲
/asdadasd.php/asdadas/asdad/asd
/adadad.html/asdadals/asdsa/asd
.
.
...etc
因此我使用分割功能,以獲得第一/ asadasda(路徑內
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被格式化.txt)在點之前。 問題是,這些詞從來不匹配,我甚至在每個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
顯然,具有p申報並進入第二個for循環之前進行初始化,使在比較的道路的差異。當我在第二個for循環中聲明p和d時,它不起作用。我不知道原因,但如果有人這樣做,我在聽:)
再次感謝!
在您的示例中,沒有匹配。 –
太複雜了。不要在'range(0,len(paths))'中使用'''''''',只要用''''''''''''''''<!爲什麼'rstrip('\ n')'。可能有一個額外的'\ r'。只需使用'rstrip()'。 – Matthias
您也可以將'p = ...'移動到inner for循環之外,因爲它每次都執行相同的計算。 – mgilson