使用python在文本文件中搜索特定字符的出现情况

使用python在文本文件中搜索特定字符的出现情况,python,regex,file,search,Python,Regex,File,Search,我的问题与类似,只是我想搜索多个字符的出现情况,例如g、d和e,然后打印所有指定字符所在的行 我尝试了以下方法,但无效: searchfile = open("myFile.txt", "r") for line in searchfile: if ('g' and 'd') in line: print line, searchfile.close() 我得到的行中要么有“g”,要么有“d”,要么两者都有,我想要的只是两个出现,而不是至少一个,这是运行上述代码的结果。正则表达式在模式

我的问题与类似,只是我想搜索多个
字符的出现情况,例如
g
d
e
,然后打印所有指定字符所在的行

我尝试了以下方法,但无效:

searchfile = open("myFile.txt", "r")
for line in searchfile:
    if ('g' and 'd') in line: print line,
searchfile.close()

我得到的行中要么有“g”,要么有“d”,要么两者都有,我想要的只是两个出现,而不是至少一个,这是运行上述代码的结果。

正则表达式在模式匹配方面肯定会帮助您,但您的搜索似乎比这更容易。请尝试以下操作:

# in_data, an array of all lines to be queried (i.e. reading a file)
in_data = [line1, line2, line3, line4]

# search each line, and return the lines which contain all your search terms
for line in in_data:
    if ('g' in line) and ('d' in line) and ('e' in line):
        print(line)
这么简单的事情应该行得通。我在这里做一些假设: 1.搜索词的顺序并不重要 2.不处理大写/小写 3.不考虑搜索词的频率


希望有帮助。

正则表达式在模式匹配方面肯定会对您有所帮助,但您的搜索似乎比这更容易。请尝试以下操作:

# in_data, an array of all lines to be queried (i.e. reading a file)
in_data = [line1, line2, line3, line4]

# search each line, and return the lines which contain all your search terms
for line in in_data:
    if ('g' in line) and ('d' in line) and ('e' in line):
        print(line)
这么简单的事情应该行得通。我在这里做一些假设: 1.搜索词的顺序并不重要 2.不处理大写/小写 3.不考虑搜索词的频率

希望有帮助。

这行:

if ('g' and 'd') in line: 

if 'd' in line:
因为

>>> 'g' and 'd'
'd'
你想要

if 'g' in line and 'd' in line:
或者更好:

if all(char in line for char in 'gde'):
(您也可以使用集合交集,但这不太通用。)

这一行:

if ('g' and 'd') in line: 

if 'd' in line:
因为

>>> 'g' and 'd'
'd'
你想要

if 'g' in line and 'd' in line:
或者更好:

if all(char in line for char in 'gde'):
(您也可以使用集合交集,但这不太通用。)

这有一个优点,即每一行中的
c检查迭代整个行时,不会重复两次


这样做的好处是,每次检查
c in line
时不会重复检查整行的两次

您是否尝试过任何方法?这并不难实现,也不需要正则表达式。你试过什么吗?这并不难实现,也不需要regex.oops,只需阅读上面的示例代码,并在测试文件上以预期的输出运行它,即只返回包含两个术语的行。要意识到,如果我的示例与您的示例完全相同:)
'g'和'd'以及'e'在第
行中不起作用——这相当于第
行中的
'e';像
'g'
'e'
这样的非空字符串是true-like。例如,
line='fred';第行打印“g”和“d”以及“e”
prints True.oops,只需阅读上面的示例代码,并在测试文件上以预期的输出运行它,即仅返回包含这两个术语的行。要意识到,如果我的示例与您的示例完全相同:)
'g'和'd'以及'e'在第
行中不起作用——这相当于第
行中的
'e';像
'g'
'e'
这样的非空字符串是true-like。例如,
line='fred';第行打印“g”和“d”以及“e”
打印为真。