2017-10-13 110 views
-1

還是相當新的Python ..Python 2.7版印刷與無意新線

我迭代通過一個文本文件:

0x000B000A 
0x000B000B 
0x000B000C 

和追加每行一個基本URL,這裏是具體的這我在遇到問題的部分代碼:

def ProcessID(id): 
    url = baseUrl + "/" + id + "/" + type + "-" + id + "-" + version + "." + extension 
    print "Processing: " + url 

for line in inputFile: 
     ProcessID(line) 

的問題是,與AB結尾的線路中的打印命令添加一個換行符:

Processing: http://example.com/0x000B000A 
/LST3-0x000B000A 
-000000.ext 
Processing: http://example.com/0x000B000B 
/LST3-0x000B000B 
-000000.ext 
Processing: http://example.com/0x000B000C/LST3-0x000B000C-000000.ext 

我在做什麼錯在這裏?這與Python解釋字符串的方式有關(即在Unicode 0A,0B中)?

感謝, PJ

回答

3

當通過在那樣的文件行迭代,該行仍包含在最終的換行符'\n'(除了最後行,如果沒有空行之後)。這是最簡單的辦法來剝奪他們關:

for line in inputFile: 
     ProcessID(line.strip()) 
     # OR: if you want to be more explicit and keep all other white space 
     ProcessID(line.rstrip('\n')) 
+0

啊!非常好,謝謝。沒有意識到這一點。 –

+0

我們不能使用'replace'嗎? –

+1

@VanPeer當然,由於這種情況下的一行只能包含一個換行符。但是我會使用'strip',因爲它更具體(並且不必搜索整條線)。 – schwobaseggl

0

你插入整條生產線,以其突破。你應該從每一行中刪除它。你可以做line.replace("\n", "")