Python:读取文本文件的内容并查找匹配/条件

时间:2012-06-27 20:04:10

标签: python python-3.x python-2.7

我正在尝试打开文本文件并查找字符串Num_row_lables。如果Num_row_labels的值大于或等于10,则打印文件名。

在下面的示例中,我的文本文件test.mrk有一些格式如下:P.s.,我的文本文件没有Num_row_labels >= 10。它总是有“equal to”。

Format= { Window_Type="Tabular", Tabular= { Num_row_labels=10 } }

所以我创建了一个变量teststring来保存我将要看的模式。 然后我打开了文件。

然后使用re,我的变量名为match Num_row_labels=10。 在匹配时使用group(),我提取了我想要的阈值编号,并使用int()转换了string to int

我的目的是在文本文件的Num_row_labels = 10或任何#大于10的情况下,将文本文件读取为find/print Num_row_labels的值以及文件名。

这是我的测试代码:

import os
import os.path
import re

teststring = """Format= { Window_Type="Tabular", Tabular= { Num_row_labels=10 } }"""
fname = "E:\MyUsers\ssbc\test.mrk"
fo = open(fname, "r")
match = re.search('Num_row_labels=(\d+)', teststring)
tnum = int(match.group(1))


if(tnum>=10):
        print(fname) 

如何确保在打开文件的内容中搜索匹配并检查tnum> = 10的条件?我的测试代码只会根据最后4行打印文件名。我想确保搜索遍布我的文本文件的内容。

2 个答案:

答案 0 :(得分:4)

所以你要做的是将整个文件作为字符串读出,并在该字符串上搜索你的模式

with open(fname, "r") as fo:
    content_as_string = fo.read()
    match = re.search('Num_row_labels=(\d+)', content_as_string)
    # do want you want to the matchings

答案 1 :(得分:1)

根据条件读取文件内容的 Python 代码

    file = '../input/testtxt/kaggle.txt'
    output = []
    with open(file, 'r') as fp:
        lines = fp.readlines()
        for i in lines:
            if('Image for' in i):
                output.append(i)
            
    print(output)