2 may
2021

## Why don't escape sequences work in tuples

Why dont the escape sequences work in tuples when printed

`````` x = ("a\n", "b\n", "c\n")
y = ("a\n" "b\n" "c\n")
print (x)
print(y)
``````

Why does it print(x) return `('a\n', 'b\n', 'c\n')` and print (y)

``````a
b
c
``````

#### wjandrea

The escape sequences do work. `x` is being printed as a tuple because it is a tuple. If you want to join its elements, use `str.join()`, or have `print()` join it for you.

``````>>> x = ('a\n', 'b\n', 'c\n')
>>> x
('a\n', 'b\n', 'c\n')
>>> ''.join(x)
'a\nb\nc\n'
>>> print(''.join(x))
a
b
c

>>> print(*x, sep='')
a
b
c

>>>
``````

Meanwhile, `y` is a string due to string literal concatenation

``````>>> y = ("a\n" "b\n" "c\n")
>>> y
'a\nb\nc\n'
>>> print(y)
a
b
c

>>>
``````

#### MarianD

Because `("a\n", "b\n", "c\n")` is a tuple, but `("a\n" "b\n" "c\n")` is a string:

`("a\n" "b\n" "c\n")` is the same as `"a\n" "b\n" "c\n"` what is in turn the same as `"a\nb\nc\n"`.

(The `"Hello, world."` string literal is possible to write as `"Hel" "lo, wor" "ld."`, no `+` between parts.)

Now, the `print()` function prints a non-string object (as e.g. your tuple) converting it first to a string applying its `.__str()__` method (which produces the same result as the standard function `str()`).

The result of `str(("a\n", "b\n", "c\n"))` is the string `"('a\\n', 'b\\n', 'c\\n')"`no newline characters in it, as you may see, it consists of these 21 characters:
`(` `'` `a` `\` `n` `'` `,` ` ` `'` `b` `\` `n` `'` `,` ` ` `'` `c` `\` `n` `'` `)`

By contrast to this string representation of your tuple, your string `("a\n" "b\n" "c\n")` alias `"a\nb\nc\n"` consist of 6 characters, and 3 of them are newline characters:

`a` `\n` `b` `\n` `c` `\n`

#### Anshul Singh Suryan

By Default `\n` takes a new line no matter what you are storing, the interpreter understands this thing that you want to store some values in the next line. So, that's the way it printed like that.

#### M? D????

Try this

``````print("a{nl}"
"b{nl}"
"c".format(nl="\n"))
``````

#### DEJA TU COMENTARIO

© 2017 website by Rubit Corporation