2014-01-14 20 views
0

我是新來的Python,並試圖找到一種方法來寫入基於文本文件的兩個條件的文件:Python:需要輸出到基於文本字符串中的兩個或多個匹配的文件

  1. 在給定的文本中,其中一行必須與我的搜索完全匹配。位置和價值總是相同的。

  2. 如果符合上述條件並且X(待定義\可以更改)的值也存在於已知位置的文本中,則將條件1中的匹配文本和值X與10直接進行的角色永不改變。

在另一個例子中,我在這個網站看到了給定文本

所以:

textInput = """\ 
I'm trying to have my program grab every fifth word from a text file and 
place it in a single string. For instance, if I typed "Everyone likes to 
eat pie because it tastes so good plus it comes in many varieties such 
as blueberry strawberry and lime" then the program should print out 
"Everyone because plus varieties and." I must start with the very first 
word and grab every fifth word after. I'm confused on how to do this. 
Below is my code, everything runs fine except the last 5 lines.""" 

從這個例子,我想編寫一個文件下面,但只有當兩者都存在:

"place it in a single string. For instance, if I typed "Everyone likes to" 

"blueberry strawberry and lime"

石灰這個詞可能會變成一個未知的變化值。

它是什麼歸結到我有一堆我正在經歷的日誌文件。如果IP地址出現在文件的特定位置,我需要該IP(這是未知的),10個處理字符以及始終與IP相距幾行的一串文本。這兩個都要寫入一個文件。

我想出瞭如何打開\關閉文件並將條目等寫入到特定發現短語的新文件,但是如果滿足兩個或更多條件的特定組合,則無法將條目發送到文件。

回答

0

我認爲最好的方法是讀取日誌文件,然後使用正則表達式來查找日誌中的所有IP地址。

ip = re.compile("^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$") 
ip = re.findall(ip, yourLogFile) 

那麼你將你的ip的文件夾中,通過每個文件使用操作系統循環已經在文件

import os 

ipAlreadyOnFile = [] 
for root, dirs, files in os.walk(r'C:\yourDirectory'): 
    for file in files: 
     ipAlreadyOnFile.append(file) 

,那麼你可以找到兩個列表之間的區別:

newIp = list(set(ip) - set(ipAlreadyOnFile)) 

現在你的newIp列表除了新的ip地址外沒有任何東西可以添加到你的目錄或者做其他的事情。

+0

感謝您的答案克里斯,但它並不完全解決我的問題。我有數百個條目的日誌。每個條目由18行組成。每行以回車結束,由單詞和數字組成。這些條目的子集具有與它們相關聯的IP地址。我試圖找到這些IP條目以及條目中另一個地方指出的另一個相關條件。將日誌文件與其他日誌文件進行比較並不能獲得我需要的信息。 – user3183485

相關問題