【发布时间】:2013-12-03 18:16:58
【问题描述】:
我正在尝试在 Python 中做一些相对简单的事情,但我很惊讶这对于它应该多么简单却不起作用。
我在这里只是想连接三个简单的字符串。在以下所有情况下,在 raw_input 输入的输入都是 "abc":
proj = raw_input("Name of project: ")
print proj
ProjRegex = 'test1' + proj + 'test2'
print ProjRegex
产量:
abc
test2abc
案例 2
proj = raw_input("Name of project: ")
print proj
ProjRegex = 'test1%stest2' % (proj)
print ProjRegex
产量:
abc
test2abc
请注意,在这两种情况下,它都用 test2 代替了 test1,而不是像预期的那样打印 "test1abctest2"。
然后我注意到如果我根本没有使用 raw_input,如果我说:
proj = "abc"
ProjRegex = 'test1' + proj + 'test2'
然后它按预期运行。
raw_input() 中是否发生了想要进行字符串替换的事情?我的理解是它需要键盘输入,删除换行符,然后作为字符串返回。
【问题讨论】:
-
我不确定你是如何得到你看到的输出的,但这不是你将这段代码作为 Python 脚本运行时得到的输出。我看到
"test1abctest2"很好。就好像在\r回车中添加了一些东西。 -
我敢打赌,如果你添加了
print repr(proj),你会看到输入是abc\r。 -
如果发生这种情况是因为您在 Windows 上,您应该适当地重新标记问题。
-
备案:OP很好地解释了问题,提供了输入和预期的输出,并且有一个真实的问题。我不明白为什么这应该被如此低估。
-
@StevenRumbalski:我需要深入了解 CPython 如何处理这个问题的来龙去脉,在 OP 给我们提供更多细节之前我不会开始这样做;具体来说,这里使用的是什么解释器、什么版本以及什么 shell 或控制台。
标签: python windows string concatenation raw-input