2017-01-09 17 views
1

我一直在嘗試最近幾個小時來縮小問題的範圍,但我看不到它。我是Python 3的新手,嘗試解析項目的文本文件。 解析只是清理一些空白並替換分隔符。 我不明白爲什麼它不起作用。無法將我的數據寫入文件?我看不到錯誤

更具體地說 我得到這個特殊的錯誤:

"NameError: name 'out' is not defined" 

代碼:

save_path = 'C:/UsersDesktop/CSVproject' 

with open('C:/Users/CSVproject/sourceData.dat', 'r') as f: 

    for line in f: 
     if ':DUBLIN' in line: 
      line = line.replace(' ', '') 
      line = line.replace(':', ';') 
      print(line) 
      found = True 
      fullNameOfFile = os.path.join(save_path, 'newFormattedData'+".csv") 
      out = open(fullNameOfFile, 'w') 

     for line in f: 
      out.write(line) 

回答

2

您正在嘗試每次打開文件的話:都柏林發生。你只需要打開它一次,你應該在一個地方打開它,在這個地方範圍確保句柄對寫入方法是可見的。

fullNameOfFile = os.path.join(save_path, 'newFormattedData'+".csv")  

out = open(fullNameOfFile, 'w') 

for line in f: 
    if ':DUBLIN' in line: 
     line = line.replace(' ', '') 
     line = line.replace(':', ';') 
     print(line) 
     found = True 

     out.write(line) 

而你絕對不希望有一個嵌套的循環迭代通過輸入文件。

+0

哦拍!我希望你的意思是...我實施了你的建議。謝謝你。它按照我的意願創建文件,但它不強制替換方法中的解析邏輯。它也不是像我在代碼中一樣打印到控制檯。我可能正在做一些非常愚蠢的事情,我不能看到... – paglynn

+0

那麼這將解決你的immidiately問題,所以你會介意接受答案是正確的,並張貼另一個問題。在這個問題上,請解釋你想達到的目標。你的樣本輸入是什麼樣的,你想要什麼保存到輸出文件。 – e4c5

+0

夠公平的。感謝您的貢獻。我不想看到該網站的垃圾用戶。在再次發佈之前,我會再嘗試一些代碼。 – paglynn

相關問題