2015-11-30 68 views
0

我有一個問題,在蟒蛇write(),這裏是我的代碼:不必要的換行.WRITE

b=open("/home/thanasis/Dropbox/NoA/CasJobs/statistics_CI/filters.txt",'r') 
a=open("/home/thanasis/Dropbox/NoA/CasJobs/statistics_CI/queries_CI.txt",'w') 

for line in b: 
    temp=line 
    detector,filters=temp.split(",") 

    a.write("SELECT MATCHID,AVG(CI) AS CI_AV into mydb.CI_%s_%s" %(detector,filters)) 
    a.write("from detailedcatalog \n where Detector = '%s' and Filter= '%s'" %(detector,filters)) 
    a.write("GROUP BY MATCHID\ngo\n") 

    a.close() 

和輸出如下:

SELECT MATCHID,AVG(CI) AS CI_AV into mydb.CI_ACS/WFC_F625W 
from detailedcatalog 
where Detector = 'ACS/WFC' and Filter= 'F625W 
'GROUP BY MATCHID 
go 

的問題是'字符跳轉到下一行。我嘗試過所有不同的方式來編寫它。有什麼建議麼?

+2

temp = line.strip() –

+0

'filters.strip()'將帶走任何前導或尾隨空格。那麼當你需要時你必須明確地加上'\ n' –

+0

謝謝你的工作!但是如何? –

回答

1

從文件讀取的行具有終止的換行符。使用.strip()刪除前導和處理之前尾隨空白:

>>> temp # example data 
'1,2,3\n' 
>>> temp.split(',') 
['1', '2', '3\n']   # newline is still present. 
>>> temp.strip().split(',') 
['1', '2', '3'] 
0

您的問題是filters具有從文本文件換行符。你實際上是在你的第一個write看到的是:

SELECT MATCHID,AVG(CI) AS CI_AV into mydb.CI_ACS/WFC_F625W <- newline here from filters 
from detailedcatalog 

的解決方案是使用strip or one of its variants to remove the newline。一旦您使用strip,如果您打算換行符在那裏,您需要在第一個write的末尾添加換行符(\n)。