从字符串中删除'\n'会将其他字符发送到lin的前面

2024-05-11 03:33:18 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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的新手,已经在google上搜索了好几个小时了。感谢您的帮助!你知道吗


Tags: 文件to字符串内容排序linelocation理论
3条回答

尝试:

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

这个怎么样:

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

除了\n字符外,您的输入可能还有\r字符。这些特殊字符可以追溯到电传打字机的时代,基本上是自动打字机。\r或return命令电传打字机将机架返回到行的开头,\n或new line命令电传打字机将压板前进到下一行。删除了新行字符,终端(半)忠实地模拟电传打字机,并覆盖当前行。在真正的电传打字机上,你会改写原文,如果你这样做的次数够多的话,你很可能会把报纸看完。但在您的视频终端(VT)上,它只是替换了以前存在的字符。你知道吗

要解决这个问题,还应该去掉\r字符。你知道吗

相关问题 更多 >