Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Email 使用python扫描文件以查找特定字符串_Email_Python 2.7 - Fatal编程技术网

Email 使用python扫描文件以查找特定字符串

Email 使用python扫描文件以查找特定字符串,email,python-2.7,Email,Python 2.7,这与我关于写入xml文档的问题有关。我试图从一个电子邮件文件(txt/html)中读取内容,但格式并不重要,我想知道的是,我如何查找一个特定的字符串(即我的构建),该字符串从不在同一个位置出现两次,并且具有我感兴趣的关联字符串?顺便说一句,我正在用python编写这个脚本。我可以举一个例子,说明我在寻找我试图使用的信息时所指的电子邮件类型 我的代码如下: with open('Daily Build Email 07012013.txt','r') as x: b = 1

这与我关于写入xml文档的问题有关。我试图从一个电子邮件文件(txt/html)中读取内容,但格式并不重要,我想知道的是,我如何查找一个特定的字符串(即我的构建),该字符串从不在同一个位置出现两次,并且具有我感兴趣的关联字符串?顺便说一句,我正在用python编写这个脚本。我可以举一个例子,说明我在寻找我试图使用的信息时所指的电子邮件类型

我的代码如下:

    with open('Daily Build Email  07012013.txt','r') as x:
      b = 1
      linka = b
      linkm = b
      for line in x:
        print b,' + ',line
        if "Link1" in line:
         linka = line
         string.strip (s[Link1: ])
         print "Link is ", linka
        #else:
        #   continue
        if "Link2" in line:
         linkb = line
         print "Link is ", linkm
        else:
            continue
        b += 1

x.close()

字符串条仅使行包含linka和linkm的网络位置,因为在打开的文件中,\之前的行中有前导字符,我需要删除这些字符,以便这些行只包含其中的链接。此外,我还需要将这两个链接都写入另一个文件(build.xml),以便在每次收到新的构建电子邮件时使用build.xml文件自动执行测试过程。另外,我还需要为每个电子邮件消息允许2个或更多版本(目前还不确定)。

我认为您的主要问题是您的string.strip-我假设您已经在文档中的某个地方看到了这一点。
string.strip
中的单词
string
不是字面意思,而是要替换为要剥离的字符串的名称。您正在告诉该字符串(在本例中,可能是linka)从自身中去掉前导字符。它接受字符列表,而不是字符串。它也不会修改字符串本身,而是返回一个新字符串,您可以将其放入同一个变量或另一个变量中。我认为您想要的更像是string.replace(fromstr,tostr),在本例中,
linka=linka.replace(“Link1:,”)

假设b是一个行计数器,您可能也不需要
else:continue
,这会跳过循环的其余部分,因此b不会递增

此外,您还应该阅读正则表达式-正则表达式-它们非常适合您在这里尝试的操作。它们有一个陡峭的学习曲线(特别是如果你试着从实用的例子开始,它们一开始可能很难阅读),但是它们非常值得,非常适合这样的东西

我意识到里面可能有调试代码

我将把以上所有内容改写如下:

import re
for line in open('Daily Build Email  07012013.txt','r'):
    match=re.match(r'Link1: (.*)',line)
    if (match):
            linka = match.group(1)

    match=re.match(r'Link2: (.*)',line)
    if (match):
            linkb = match.group(1)
因此,主要的不同之处(除了剥离所有调试代码…)是使用正则表达式-使用模块
re
。指令
match=re.match(r'Link1:(.*),第行)
是所有魔法发生的地方<代码>链接1:(.*)是要查找的模式。在模式中,字母通常代表它们自己-它在字符串的开头搜索
Link1:
(在本例中,是行
的开头)。一个点可以代表任何字符,
表示0或更多。因此括号之间的位表示查找任何数字(包括0)任何字符。除非另有说明,否则正则表达式是“贪婪的”——它们尽可能匹配。因此这将匹配到行尾。因为此位在括号中,所以它们被分配到“组”(稍后将对此进行详细介绍)

因此,此re.match将搜索第二个参数(行),并尝试匹配模式。如果找到匹配项,则返回有关该匹配项的信息,否则不返回任何信息

在下一行,我们说
if(match):
-matches通过了这个测试,没有一个失败,所以这个代码块只有在有匹配的情况下才会运行。我们从匹配中得到组(1)(即第一组括号中的位),“Link1:”后面的信息,我们把它放在linka中,嘿!我们完成了

对Link2/linkb重复相同的步骤

然后,继续下一行


完成!

您可能希望包含一个示例输入和输出,以明确您想要的内容,以及您到目前为止在这段代码上取得了多大进展?完成,希望您对添加的内容感到满意