I am trying to do something relatively simple in Python and am surprised at how badly this isn't working for how simple it should be.
I'm here just trying to concatenate three simple strings. The input typed at raw_input is "abc"
in all cases below:
proj = raw_input("Name of project: ")
print proj
ProjRegex = 'test1' + proj + 'test2'
print ProjRegex
Yields:
abc
test2abc
Case 2
proj = raw_input("Name of project: ")
print proj
ProjRegex = 'test1%stest2' % (proj)
print ProjRegex
Yields:
abc
test2abc
Note that in both cases instead of printing "test1abctest2"
, as expected, it's substituting test2 for test1.
Then I noticed that if instead of using raw_input at all, if I say:
proj = "abc"
ProjRegex = 'test1' + proj + 'test2'
Then it behaves as expected.
So is something happening in raw_input()
that is wanting to do string substitution? My understanding is it takes keyboard input, strips a newline, and returns as a string.
This must be a problem related to a a trailing \r
...
Try this:
'test1' + proj.rstrip() + 'test2'
Explanation:
Your concatenated string contains \r
in the middle. When printed, the console does print the beginning as test1...
but when it encounters the \r
, it "carriage-returns" to the beginning of the line, and overwrites it with the rest.