Home > other >  Printing Single Quote inside the string
Printing Single Quote inside the string

Time:03-21

I want to output

XYZ's "ABC"

I tried the following 3 statements in Python IDLE.

  • 1st and 2nd statement output a \ before '.
  • 3rd statement with print function doesn't output \ before '.

Being new to Python, I wanted to understand why \ is output before ' in the 1st and 2nd statements.

>>> "XYZ\'s \"ABC\""
'XYZ\'s "ABC"'

>>> "XYZ's \"ABC\""
'XYZ\'s "ABC"'

>>> print("XYZ\'s \"ABC\"")
XYZ's "ABC"

CodePudding user response:

Here are my observations when you call repr() on a string: (It's the same in IDLE, REPL, etc)

  • If you print a string(a normal string without single or double quote) with repr() it adds a single quote around it. (note: when you hit enter on REPL the repr() gets called not __str__ which is called by print function.)

  • If the word has either ' or " : First, there is no backslash in the output. The output is gonna be surrounded by " if the word has ' and ' if the word has ".

  • If the word has both ' and ": The output is gonna be surrounded by single quote. The ' is gonna get escaped with backslash but the " is not escaped.

Examples:

def print_it(s):
    print(repr(s))
    print("-----------------------------------")

print_it("Soroush")

print_it('Soroush"s book')
print_it("Soroush's book")

print_it('Soroush"s book and Soroush\' pen')
print_it("Soroush's book and Soroush\" pen")

output:

'Soroush'
-----------------------------------
'Soroush"s book'
-----------------------------------
"Soroush's book"
-----------------------------------
'Soroush"s book and Soroush\' pen'
-----------------------------------
'Soroush\'s book and Soroush" pen'
-----------------------------------

So with that being said, the only way to get your desired output is by calling str() on a string.

  • I know Soroush"s book is grammatically wrong in English. I just want to put in inside an expression.

CodePudding user response:

Not sure what you want it to print. Do you want it to output XYZ\'s \"ABC\" or XYZ's "ABC"?

The \ escapes next special character like quotes, so if you want to print a \ the code needs to have two \\.

string = "Im \\" 
print(string)
output: Im \

If you want to print quotes you need single quotes:

string = 'theres a "lot of "" in" my "" script'
print(string)

Output: theres a "lot of "" in" my "" script

Single quotes makes you able to have double quotes inside the string.

  • Related