0

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

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 新手,我已经在谷歌上搜索了几个小时。任何帮助表示赞赏!

4

3 回答 3

3

这个怎么样:

print "{0} to {1} | {2} {3}".format(*[x.strip() for x  in eventlist[i][1:5]])
于 2013-10-19T22:39:02.470 回答
2

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

要解决此问题,您还应该剥离\r字符。

于 2013-10-19T22:35:18.347 回答
0

尝试:

print (eventlist[i][1].strip() + " to " + eventlist[i][2].strip() + 
       " | " + eventlist[i][3].strip() + eventlist[i][4].strip())
于 2013-10-19T22:40:10.850 回答