3

私はここでかなり立ち往生しています。次のようなテキスト ファイル (example.txt) があるとします。

Generic line 1() 46536.buildsomething  
Generic line 2() 98452.constructsomething  
Something I'm interested in seeing  
Another common line() blablabla abc945  
Yet another common line() runningoutofideashere.923954  
Another line I'm interested in seeing  
Line I don't care about 1() yaddayaddayadda  
Line I don't care about 2() yaddayaddayadda  
Generic line 3() 23485.buildsomething  
Yet some other common line  

印刷しない行の一部を含む除外テキスト ファイル (exclusions.txt) が作成されました。

Generic  
common  
don't care about

example.txt ファイルを開き、exclusives.txt ファイルを開き、exclusives.txt の行を含まない example.txt の行を出力したいという考えです。

私がこれまでに試したこと(まったく成功していません):

textfile = open("example.txt", "r")
textfile = textfile.readlines()

exclusionslist = []
exclusions = open("exclusions.txt", "r")
exclusions = exclusions.readlines()
for line in exclusions:
    exclusionslist.append(line.rstrip('\n'))

for excline in exclusions:
    for line in textfile:
        if exline not in line:
            print line

問題が何であるかはわかっていると思いますが、それを修正する方法がわかりません。テキストファイルの行に除外の行が含まれている場合は、それを印刷しないようにPythonに指示する必要があると思います。

4

2 に答える 2

4

あなたはそれを不必要に複雑にしています:

with open("example.txt", "r") as text, open("exclusions.txt", "r") as exc:
    exclusions = [line.rstrip('\n') for line in exc]
    for line in text:
        if not any(exclusion in line for exclusion in exclusions):
            print line
于 2012-10-04T10:52:52.997 に答える
1

あなたが望むようです:

textfile = open("example.txt", "r")
textfilelines = textfile.readlines()

exclusions = open("exclusions.txt", "r")
exclusionlines = exclusions.readlines()
for x in range(len(exclusionlines)):
    exclusionlines[x] = exclusionlines[x].strip("\n")

for line in textfilelines:
    found = False
    for exclude in exclusionlines:
        if exclude in line:
            found = True
    if not found:
        print line

これはおそらく何らかの魔法の構文を使用して圧縮できますが、それでは読みにくくなります。出力の希望によっては、テキストファイル行から \n を削除する必要がある場合があります。

于 2012-10-04T11:20:30.047 に答える