从字符串中删除'\ n'会在行前发送其他字符

时间:2013-10-19 22:29:26

标签: python python-3.x

我不确定这是否是一个常见的问题,但我找不到任何有类似事情的人。 基本上发生的事情是我从文件中取出了一串字符串并将它们全部分类为单独的变量 - 这些都运行正常。 但是,当我打印它时,使用它:

print eventlist[i][1] + " to " + eventlist[i][2] + " | " + eventlist[i][3] + eventlist[i][4]

我在几行而不是一行上得到输出:

12:30AM to 1:30PM | ECS 124
CSC 360

我试图将\n字符剥离eventlist[i][3],理论上它工作正常,但它会将打印行中的所有内容发送到行前面,覆盖已经存在的内容有:

location = eventlist[i][3].rstrip("\n")
print eventlist[i][1] + " to " + eventlist[i][2] + " | " + location + eventlist[i][4]

变为:

CSC 360 to 1:30PM | ECS 124

而不是:

12:30AM to 1:30PM | ECS 124 CSC 360

我也尝试从行中读取最后一个字符(location = line[9:-1]),但这给了我同样的问题

我已经能够缩小确切的问题,但我找不到任何方法来解决它。我是python的新手,我一直在谷歌搜索几个小时。任何帮助表示赞赏!

3 个答案:

答案 0 :(得分:3)

这个怎么样:

print "{0} to {1} | {2} {3}".format(*[x.strip() for x  in eventlist[i][1:5]])

答案 1 :(得分:2)

\r个字符外,您的输入可能还有\n个字符。这些特殊字符可以追溯到电传打字机的时代,主要是自动打字机。 \r或返回指示电传打字机将托架返回到行的开头,\n或新行指示电传打字机将压板推进到下一行。您删除了新的行字符,您的终端(半)忠实地模拟电传打字机,并覆盖当前行。在一个真正的电传打字机上,你会覆盖原始文本,如果你做了足够多次,你可能会穿着纸张。但是在你的视频终端(VT)上,它只是替换了之前存在的字符。

要解决此问题,您还应该删除\r个字符。

答案 2 :(得分:0)

尝试:

print (eventlist[i][1].strip() + " to " + eventlist[i][2].strip() + 
       " | " + eventlist[i][3].strip() + eventlist[i][4].strip())