Python 2.7版印刷与无意新线
问题描述:
还是相当新的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)
的问题是,与A
或B
结尾的线路中的打印命令添加一个换行符:
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
答
当通过在那样的文件行迭代,该行仍包含在最终的换行符'\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'))
答
你插入整条生产线,以其突破。你应该从每一行中删除它。你可以做line.replace("\n", "")
啊!非常好,谢谢。没有意识到这一点。 –
我们不能使用'replace'吗? –
@VanPeer当然,由于这种情况下的一行只能包含一个换行符。但是我会使用'strip',因为它更具体(并且不必搜索整条线)。 – schwobaseggl