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

2024-10-01 04:51:03 发布

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

我在使用Python时遇到了一个小问题

print ",".join(array)

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

,monkey,pig

有什么想法吗?你知道吗

好了,伙计们,代码是这样的

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

现在我知道如何删除/r,但如何防止它在第一时间到达那里?你知道吗


Tags: 代码inputraw时间arraymonkeysplitprint
3条回答

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

您构建了字符串:

'dog\r,monkey,pig'

和正在打印,这导致首先打印dog,然后光标移回行的开头(返回“打印托架”),然后打印其余的内容,覆盖dog文本。你知道吗

从输入或连接的字符串中删除回车符。您可以使用^{}^{}删除所有回车符,或者使用^{}(和变体)删除仍在列表中的字符串开头和结尾的回车符。你知道吗

例如,如果您的输入来自raw_input(),您可以简单地使用^{}删除结尾的回车:

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

返回字符导致它跳过第一部分,您可以通过使用repr来查看差异

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

使用^{}^{}删除返回字符

>>> 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

这里讨论了mapvs理解的用法。你知道吗

最流行的(也是公认的答案)结论是引用here

map may be microscopically faster in some cases (when you're NOT making a lambda for the purpose, but using the same function in map and a listcomp).

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

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

或者,如果您发布了您的代码,我们可能可以帮助您首先获得“\r”。你知道吗

相关问题 更多 >