【问题标题】:Python 2.7 print with unintentional new lines [duplicate]Python 2.7 打印带有无意的新行 [重复]
【发布时间】:2017-10-13 12:00:39
【问题描述】:

对 Python 还是很陌生..

我正在遍历一个文本文件:

0x000B000A
0x000B000B
0x000B000C

并将每一行附加到一个基本网址,这是我遇到问题的代码的特定部分:

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

【问题讨论】:

    标签: python string python-2.7 newline line-breaks


    【解决方案1】:

    在这样的文件中迭代行时,这些行仍将包含最后的换行符'\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'))  
    

    【讨论】:

    • 啊!非常好,谢谢。没有意识到这一点。
    • 我们不能也使用replace吗?
    • @VanPeer 当然,因为在这种情况下,一行只能包含一个换行符。但我会选择strip,因为它更具体(并且不必搜索整行)。
    【解决方案2】:

    您正在插入整行,包括中断。您应该从每一行中删除它。你可以line.replace("\n", "")

    【讨论】:

      猜你喜欢
      • 2023-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多