我无法用Python的re模块创建一个类的实例。以下是我想要做的:为什么Python的re模块不能在这个方法中工作?
- 循环遍历许多数据文件的每一行。
- 如果一行与记录的格式相匹配,则创建一个Record类的实例,并将该记录的两个值作为属性。
我期待下面的代码片段打印在了记录类terminal()
方法re
模块捕获5个大写字母串,但显然我误解的东西。实际输出在代码下面。
class SrcFile:
def __init__(self, which):
self.name = which
class Record(SrcFile):
def terminal(self):
recordline = re.compile(r"^([A-Z]{5})\s{3}")
if recordline.match(self):
m = recordline.match(self)
return m.group(1)
for f in files:
file = SrcFile(f)
for l in f:
record = Record(f)
print(record.terminal())
同样,我希望看到五个大写字母串的每个记录行,但我实际得到的是:
Traceback (most recent call last):
File "./next.py", line 78, in <module>
print(record.terminal())
File "./next.py", line 63, in terminal
if recordline.match(self):
TypeError: expected string or buffer
这也将是有益的,如果有人可以解释,为什么在代码
for f in files:
file = SrcFile(f)
for l in f:
record = Record(f)
使用record = Record(file)
显然是不正确的。我通过试验和错误发现了这一点,因为我无法使用带错误代码的record.method()访问文件的SrcFile类的方法,但我不明白为什么。
我敢肯定,我在编程方面的缺乏经验,尤其是Python对于编程尤其明显。在此先感谢您的帮助。
另外,他没有使用名为'file'的'SrcFile'实例。 –
@DavidRobinson,谢谢你指出我的错误;这是一个充满了他们的一天! – Gregory
每个人都从初学者开始! –