Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.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
用于文本的简单筛选Python脚本_Python_Regex_Search_Filter - Fatal编程技术网

用于文本的简单筛选Python脚本

用于文本的简单筛选Python脚本,python,regex,search,filter,Python,Regex,Search,Filter,我试图创建一个简单的过滤函数,它对文本文件运行正则表达式并返回包含该正则表达式的所有单词 例如,如果我想找到所有包含abc的单词,我有一个列表:abcde,bce,xyz和zyxabc,脚本将返回abcde和zyxabc 我下面有一个脚本,但是我不确定它是否只是我失败的正则表达式。它只返回abc两次,而不是完整的单词。谢谢 import re text = open("test.txt", "r") regex = re.compile(r'(abc)') for line in text:

我试图创建一个简单的过滤函数,它对文本文件运行正则表达式并返回包含该正则表达式的所有单词

例如,如果我想找到所有包含abc的单词,我有一个列表:abcde,bce,xyz和zyxabc,脚本将返回abcde和zyxabc

我下面有一个脚本,但是我不确定它是否只是我失败的正则表达式。它只返回abc两次,而不是完整的单词。谢谢

import re

text = open("test.txt", "r")
regex = re.compile(r'(abc)')

for line in text:
    target = regex.findall(line)
    for word in target:
        print word

我认为你不需要正则表达式来完成这样的任务,你可以简单地将行拆分,创建一个单词列表,然后在单词列表上循环,并在操作符中使用:

 with open("test.txt") as f :
     for line in f:
         for w in line.split():
              if 'abc' in w :
                   print w 

我认为你不需要正则表达式来完成这样的任务,你可以简单地将行拆分,创建一个单词列表,然后在单词列表上循环,并在操作符中使用:

 with open("test.txt") as f :
     for line in f:
         for w in line.split():
              if 'abc' in w :
                   print w 

您的方法是正确的,但是,您可以将正则表达式更改为r'.*abc.*'

 regex = re.compile(r'.*abc.*')
这将使所有行与通配符中的abc匹配。*`将匹配行中的所有字母

将打印一个更改了特定行的小演示

abcde
zyxabc

注意,由于Kasra,在这种情况下最好使用in operator,但是您的方法是正确的,您可以将正则表达式更改为r'.*abc.*'

 regex = re.compile(r'.*abc.*')
这将使所有行与通配符中的abc匹配。*`将匹配行中的所有字母

将打印一个更改了特定行的小演示

abcde
zyxabc
注意,与Kasra一样,在这种情况下,最好在operator中使用