我正在尝试在文本文件中匹配表示最大文件大小的字符串。我正在使用Python 3.4.3和正则表达式。我在Pythex编辑器中http://pythex.org/测试了模式。模式有效,但是当我用python测试时,我什么都没得到,m
返回None
,就像没有执行匹配一样!
Filestorage information
{
Size in kilobyte : 768
Size in byte : 786432
Maximum filesize is : 782336
Used : No (marked as empty or invalid)
}
import re
Userspace="Userspace_info.txt"
Form =r"\s{1,}Maximum filesize is \s{1,}:?\s*([0-9]{1,})"
p = re.compile(Form)
m = p.match(Userspace)
print (m)
if m != None:
A= m.group()
print (A)
else:
print("couldnt find the Maximal userspace memory size")
答案 0 :(得分:0)
您可以使用以下方式打开文件内容:
open(Userspace).read()
您应该将其传递到match
:
m = p.match(open(Userspace).read())
答案 1 :(得分:0)
Userspace
是文件的名称,而不是内容。首先,您必须open
该文件,然后将正则表达式与各行匹配。
import re
with open("Userspace_info.txt") as Userspace:
Form =r"\s{1,}Maximum filesize is \s{1,}:?\s*([0-9]{1,})"
p = re.compile(Form)
for line in Userspace:
m = p.match(line)
if m != None:
A= m.group()
print (A)
break
else:
print("couldnt find the Maximal userspace memory size")
这使用for/else
循环,即只有在循环正常结束时才会打印最终的print
行,即如果break
尚未触发。