我正在尝试打开文本文件并查找字符串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行打印文件名。我想确保搜索遍布我的文本文件的内容。
答案 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)