2014-09-21 48 views
1

當我試圖使用此文件作爲routable.txt作爲輸入我得到這個誤差如何分割線爲每個空間,並獲得每個字在python

Ç10.0.0.0的FastEthernet0/0

Ç12.0 .0.0的Serial0/1/0

ř13.0.0.0 12.0.0.2的Serial0/1/0

ř14.0.0.0 12.0.0.2的Serial0/1/0

ř15.0.0.0 12.0.0.2 Serial0/1/0

ř20.0.0.0 12.0.0.2的Serial0/1/0

ř25.0.0.0 12.0.0.2的Serial0/1/0

data=open('routable.txt') 
data.seek(0) 
for each_line in data: 
    print (each_line,end=' ') 
    (c_r, dip, via, eth)=each_line.split(" ", maxsplit=4) 


data.close() 

誤差是

Ç10.0.0.0的FastEthernet0/0

回溯(最近最後調用): 文件 「C:/Python34/acnrouting.py」,第5行,在 (c_r,浸塗,通過,ETH)= each_line.split(」」,maxsplit = 4) ValueError異常:需要比3點的值更解壓

回答

0
with open('routable.txt') as data: 
    for line in data: 
     if not line: 
      continue # skip empty lines 
     print(line, end="") 
     parts = line.split() 
     if len(parts) == 4: 
      c_r, dip, via, eth = parts 
     elif len(parts) == 3: 
      c_r, dip, eth = parts 
     else: 
      print("Bad Line!") 

注:

  • with結構是處理打開文件的首選蟒蛇方式,因爲它確保了文件句柄將得到時沒有關閉正在使用。

  • data.seek(0)是不必要的。打開文件時,文件指針始終位於文件的開頭。

  • 樣本輸入,因爲它出現在stackoverflow上,有空白(空)行。已添加if語句以確保這些行被忽略。

  • 並非所有的輸入行都有四個元素。有些人有三個。這段代碼測試了有多少元素並且適當地解包。

相關問題