Create a String in Python: Single/Double/Triple Quotes, str()

Modified: | Tags: Python, String

In Python, strings (str) can be created by enclosing text in single quotes ', double quotes ", and triple quotes (''', """). You can also convert objects of other types into strings using str().

Single quotes: '

To create a string, enclose the text in single quotes '.

s = 'abc'
print(s)
# abc

print(type(s))
# <class 'str'>

Double quotes: "

Alternatively, you can enclose the text in double quotes " to create a string.

s = "abc"
print(s)
# abc

print(type(s))
# <class 'str'>

Difference between single quotes and double quotes

Both values are equal

Regardless of whether you use single quotes ' or double quotes ", the resulting strings are equal.

s_sq = 'abc'
s_dq = "abc"

print(s_sq == s_dq)
# True

Quotes in strings are handled differently

In a string enclosed with single quotes ', you can use double quotes " directly. However, single quotes ' need to be escaped with a backslash, like this: \'. Writing \" for double quotes within the single-quoted string is also permissible, but unnecessary.

s_sq = 'a\'b"c'
print(s_sq)
# a'b"c

s_sq = 'a\'b\"c'
print(s_sq)
# a'b"c

In a string enclosed with double quotes ", you can use single quotes ' directly. However, double quotes " need to be escaped with a backslash, like this: \". Writing \' for single quotes within the double-quoted string is also permissible, but unnecessary.

s_dq = "a'b\"c"
print(s_dq)
# a'b"c

s_dq = "a\'b\"c"
print(s_dq)
# a'b"c

Since the difference is only in notation, the resulting values are equal in both cases.

s_sq = 'a\'b"c'
s_dq = "a'b\"c"

print(s_sq == s_dq)
# True

Triple quotes: ''', """

Triple quotes, either three single quotes ''' or three double quotes """, can also be used to create a string.

Multiple lines

An error will occur if you insert a newline directly into a string enclosed by single or double quotes. To insert a newline, you need to use \n.

# s = 'abc
# xyz'
# SyntaxError: EOL while scanning string literal

s = 'abc\nxyz'
print(s)
# abc
# xyz

Within a string enclosed in triple quotes, line breaks can be directly included without any additional escaping.

s_tq = '''abc
xyz'''

print(s_tq)
# abc
# xyz

print(type(s_tq))
# <class 'str'>

Of course, a triple-quoted string does not always have to include line breaks.

s_tq = '''abc'''
print(s_tq)
# abc

Single and double quotes

You can use double quotes " in three single quotes ''' and single quotes ' in three double quotes """. Additionally, you can use escaped single \' or double quotes \" within both types of triple quotes. In all cases, the resulting strings are equal.

s_tq_sq = '''\'abc\'
"xyz"'''

print(s_tq_sq)
# 'abc'
# "xyz"

s_tq_dq = """'abc'
\"xyz\""""

print(s_tq_dq)
# 'abc'
# "xyz"

print(s_tq_sq == s_tq_dq)
# True

Indentation

If spaces are added at the beginning of a line to match the indentation, the resulting string will include these spaces.

s_tq = '''abc
          xyz'''

print(s_tq)
# abc
#           xyz

An alternative way to write multiline strings is by using line breaks and parentheses.

s_multi = ('abc\n'
           'xyz')

print(s_multi)
# abc
# xyz

See the following article for details.

Convert other types to strings: str()

You can use str() to convert objects of other types to strings (str).

str() returns the result of the __str__() method of the target object. If its type has no __str__() method defined, it returns the result of repr().

Convert numbers to strings

Integers (int) and floating point numbers (float) can be converted to strings (str) using str().

i = 100

s_i = str(i)
print(s_i)
# 100

print(type(s_i))
# <class 'str'>

f = 0.123

s_f = str(f)
print(s_f)
# 0.123

print(type(s_f))
# <class 'str'>

For example, even if int values are in hexadecimal or float values are in scientific notation, str() converts them to standard decimal strings.

i = 0xFF
print(i)
# 255

s_i = str(i)
print(s_i)
# 255

f = 1.23e+10
print(f)
# 12300000000.0

s_f = str(f)
print(s_f)
# 12300000000.0

To convert a value to a string in a specific format, use the built-in format() function.

s_i_format = format(i, '#X')
print(s_i_format)
# 0XFF

s_f_format = format(f, '.2e')
print(s_f_format)
# 1.23e+10

To convert a string of numbers to numeric values, refer to the following article.

Convert lists and dictionaries to strings

You can also convert lists (list) and dictionaries (dict) to strings (str) using str().

l = [0, 1, 2]

s_l = str(l)
print(s_l)
# [0, 1, 2]

print(type(s_l))
# <class 'str'>

d = {'a': 1,
     'b': 2,
     'c': 3}

s_d = str(d)

print(s_d)
# {'a': 1, 'b': 2, 'c': 3}

print(type(s_d))

To convert a list or dictionary to a well-formatted string, you can use the pformat() function from the pprint module in the standard library.

import pprint

dl = {'a': 1, 'b': 2, 'c': [100, 200, 300]}

s_dl = str(dl)
print(s_dl)
# {'a': 1, 'b': 2, 'c': [100, 200, 300]}

p_dl = pprint.pformat(dl, width=10)
print(p_dl)
# {'a': 1,
#  'b': 2,
#  'c': [100,
#        200,
#        300]}

print(type(p_dl))
# <class 'str'>

For more information on the pprint module, refer to the following article.

Related Categories

Related Articles