我是python新手,需要帮助解决一个问题。基本上,我需要打开一个文件,并阅读它,我可以做的没有问题。问题出现在第0行,我需要检查头格式。在
标头的格式必须是:p wncf nvar nclauses hard
其中“nvar”、“nclauses”和“hard”都是正整数。在
例如:
p wncf 1563 817439 186191
将是有效的标题行。在
下面是我已经回答过的一个问题的编码:
import re
filename = raw_input('Please enter the name of the WNCF file: ')
f = open(filename, 'r')
for line in f:
p = re.compile('p wncf \d+ \d+ \d+$')
if p.match(line[0]) == None:
print "incorrect format"
我仍然得到一个不正确的格式,即使文件的格式是正确的。另外,是否可以将整数赋给一个对象?在
提前谢谢。在
好吧,有几件事。在
您只需要编译正则表达式一次。在上面给出的示例中,您将为文件中的每一行重新编译它。
line[0]
只是每行的第一个字符。将line[0]
替换为line
,您的代码应该可以工作。要将整数赋给一个对象,必须将所需的组括在括号中。在你的情况下,让
而不是返回匹配对象或
^{pr2}$p.match(line)
,而是使用findall
。检查以下内容作为您所拥有内容的替代品。在编辑:如果你的头值也可以包含负数,你应该将
r"p wncf (\d+) (\d+) (\d+)"
替换为r"p wncf (-?\d+) (-?\d+) (-?\d+)"
。在类似这样的内容(lines是按顺序排列的所有行的列表):
您可能需要使用
p.match(line)
。您要将行的第一个字符传递给正则表达式,而不是整行。在相关问题 更多 >
编程相关推荐