作爲內部項目的一部分,我必須解析dns區域文件記錄。該文件看起來大致如此。Python從配置創建詞典字典
$ORIGIN 0001.test.domain.com.
test-qa CNAME test-qa.0001.test.domain.com.
$ORIGIN test-qa.domain.com.
unit-test01 A 192.168.0.2
$TTL 60 ; 1 minute
integration-test A 192.168.0.102
$ORIGIN dev.domain.com.
web A 192.168.10.10
$TTL 300; 5 minutes
api A 192.168.10.13
默認TTL是3600,也就是說,對於上述數據,
test-qa CNAME test-qa.0001.test.domain.com.
有一個3600的TTL,因爲它沒有任何地方提到$ TTL。然而,
unit-test01 A 192.168.0.2
有一個3600的TTL和
integration-test A 192.168.0.102
有60秒一個TTL。
我想從上面的這些數據中創建一個數據結構,我猜字典將是遍歷這些數據的最佳方式。
我所做的:
origin = re.compile("^\$ORIGIN.*")
ttl = re.compile("^$TTL.*")
default_ttl = "$TTL 3600"
data_dict = {}
primary_key = None
value = None
for line in data_zones:
if origin.search(line):
line = line.replace("$ORIGIN ", "")
primary_key = line
elif ttl.search(line):
default_ttl = line
else:
value = line
data_dict[primary_key] = [default_ttl]
data_dict[primary_key][default_ttl] = value
我想將它轉換成一個字典,但我得到的錯誤
TypeError: list indices must be integers, not str
我的樣本數據結構需要看起來像
0001.test.domain.com.: #This would be the first level Key
ttl:3600: #This would be the second level key
test-qa CNAME test-qa.0001.test.domain.com. #Value
test-qa.domain.com.: #This would be the first level Key
ttl:3600: #This would be the second level key
unit-test01 A 192.168.0.2 #value
ttl:60: #This would be the second level key
integration-test A 192.168.0.102 #value
我在這裏做錯了什麼?