2017-10-13 111 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", "")