我無法用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
每個人都從初學者開始! –