\ r \ n之前的字符串不显示

时间:2015-05-11 19:43:21

标签: python

使用

时,我在Python中遇到这个小问题
print ",".join(array)

例如,使用array=['dog\r', 'monkey', 'pig']时,输出如下所示:

,monkey,pig

有什么想法吗?

好吧,这些代码本身就是这样的

a = raw_input(">>")
uAlpha = a.split(",")

现在我知道如何删除/ r但是如何防止它首先到达那里?

3 个答案:

答案 0 :(得分:8)

\r是一个回车符,所以它正在做它应该做的事情。该字符串实际上是dog\r,monkey,pig,但是当您打印它时,由于,monkey,pig的作用(将光标移动到行的开头),它看起来像\r。尝试从字符串中去除回车符(以及任何其他空格):

>>> array=['dog\r', 'monkey', 'pig']
>>> ",".join(s.strip() for s in array)
dog,monkey,pig

或者,如果您发布了代码,我们可能会帮助您首先让“\ r”成为您的代码。

答案 1 :(得分:3)

您在字符串中包含回车符。您正在指示终端将光标移回行的开头并从那里继续打印。

您构建了字符串:

'dog\r,monkey,pig'

并正在打印,导致首先打印dog,然后光标移回到行的开头(返回'打印托架'),然后打印其余部分覆盖dog文字

从输入或连接的字符串中删除回车符。您可以使用str.replace()str.translate()删除所有回车符,或者使用str.strip()(和变体)在您仍然拥有列表时从字符串的开头和结尾删除它们。

例如,如果您的输入来自raw_input(),则只需使用str.rstrip()从结尾删除回车符:

a = raw_input(">>").rstrip('\r')
uAlpha = a.split(",") 

答案 2 :(得分:2)

返回字符导致它跳过第一部分,您可以使用repr

查看差异
>>> print ",".join(array)
,monkey,pig
>>> print repr(",".join(array))
'dog\r,monkey,pig'

使用mapstrip删除返回字符

>>> array=['dog\r', 'monkey', 'pig']
>>> ",".join(map(str.strip,array))

输出

'dog,monkey,pig'

请注意,使用map而不是理解来删除字符会稍微好一些。 timeit结果

$ python -m timeit "','.join(s.strip() for s in ['dog\r', 'monkey', 'pig'])"
1000000 loops, best of 3: 1.18 usec per loop
$ python -m timeit "','.join(map(str.strip,['dog\r', 'monkey', 'pig']))"
1000000 loops, best of 3: 0.647 usec per loop

此处讨论map与理解的使用。

最受欢迎(并接受的答案)结论引用here

  在某些情况下,

地图可能 显微镜 更快(当你没有为此目的制作lambda,但在地图和listcomp中使用相同的功能时)。