Search code examples
pythoninterpreterread-eval-print-loop

In the Python interpreter, how do you return a value without single quotes around it?


In the Python interpreter, how do you return a value without single quotes around it?

Example:

>>> def function(x):
...     return x
...
>>> function("hi")
'hi'

I expect it to return hi instead of 'hi'


Solution

  • In the Python interactive prompt, if you return a string, it will be displayed with quotes around it, mainly so that you know it's a string.

    If you just print the string, it will not be shown with quotes (unless the string has quotes in it).

    >>> 1 # just a number, so no quotes
    1
    >>> "hi" # just a string, displayed with quotes
    'hi'
    >>> print("hi") # being *printed* to the screen, so do not show quotes
    hi
    >>> "'hello'" # string with embedded single quotes
    "'hello'"
    >>> print("'hello'") # *printing* a string with embedded single quotes
    'hello'
    

    If you actually do need to remove leading/trailing quotation marks, use the .strip method of the string to remove single and/or double quotes:

    >>> print("""'"hello"'""")
    '"hello"'
    >>> print("""'"hello"'""".strip('"\''))
    hello