2014-01-14 23 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

相关问题