06.1

>>> x = "Cześć!"
>>> x[0]
'C'
>>> x[-1]
'!'
>>> x[1:]
'ześć!'


>>> x = "Do zobaczenia!\n"
>>> x = x[:-1]
>>> x
'Do zobaczenia!'


>>> len("Do zobaczenia!")
14

06.2 Podstawowe działania na łańcuchach znaków

>>> x = "Witaj, " + "świecie"
>>> x
'Witaj, świecie'


>>> 8 * "x"
'xxxxxxxx'

06.3.2 Znaki specjalne i znaki ucieczki

>>> 'm'
'm'
>>> '\155'
'm'
>>> '\x6D'
'm'


>>> '\n'
'\n'
>>> '\012'
'\n'
>>> '\x0A'
'\n'


>>> a_w_unicode = '\N{LATIN SMALL LETTER A}'      #A
>>> a_w_unicode
'a'                                            #1
>>> a_z_ogonkiem_w_unicode = '\N{LATIN SMALL LETTER A WITH OGONEK}' 
>>> a_z_ogonkiem_w_unicode
'ą'
>>> "\u0105"
'ą'                                   #B

06.3.3 Drukowanie i rozwijanie łańcuchów znaków ze znakami specjalnymi

>>> 'a\n\tb'
'a\n\tb'
>>> print('a\n\tb')
a
        b


>>> print("abc\n")
abc

>>> print("abc\n", end="")           
abc
>>>

06.4.1 Metody split i join

>>> " ".join(["join", "wstawi", "spacje", "między", "słowa"])
'join wstawi spacje między słowa'


>>> "::".join(["A", "teraz", "rozdzieli", "dwukropkami"])
'A::teraz::rozdzieli::dwukropkami'


>>> "".join(['To', 'nie', 'będzie', 'podzielone'])
'Toniebędziepodzielone'


>>> x = "Możesz\t\t wpleść tabulatory\t\n \t i znaki nowej linii \n\n"
>>> x.split()
['Możesz', 'wpleść', 'tabulatory', 'i', 'znaki', 'nowej', 'linii']
>>> x = "chochliki"
>>> x.split("ch")
['', 'o', 'liki']


>>> x = 'a b c d'
>>> x.split(' ', 1)
['a', 'b c d']
>>> x.split(' ', 2)
['a', 'b', 'c d']
>>> x.split(' ', 9)
['a', 'b', 'c', 'd']

06.4.2 Konwersja łańcuchów znaków na liczby

>>> float('123.456')
123.456
>>> float('xxyy') 
Traceback (innermost last):
 File "<stdin>", line 1, in ?
ValueError: could not convert string to float: 'xxyy'
>>> int('3333')
3333
>>> int('123.456')                       #A
Traceback (innermost last):
 File "<stdin>", line 1, in ?
ValueError: invalid literal for int() with base 10: '123.456'
>>> int('10000', 8)                   #B
4096
>>> int('101', 2)
5
>>> int('ff', 16)
255
>>> int('123456', 6)              #C
Traceback (innermost last):
 File "<stdin>", line 1, in ?
ValueError: invalid literal for int() with base 6: '123456'

06.4.3 Usuwanie dodatkowych białych znaków

>>> x = "  Witaj,     świecie\t\t "
>>> x.strip()
'Witaj,     świecie'
>>> x.lstrip()
'Witaj,     świecie\t\t '
>>> x.rstrip()
'  Witaj,     świecie'


>>> import string
>>> string.whitespace
' \t\n\r\x0b\x0c'
>>> " \t\n\r\v\f"
' \t\n\r\x0b\x0c'


>>> x = "www.python.org"
>>> x.strip("w")                       #A
'.python.org'
>>> x.strip("gor")                     #1
'www.python.'
>>> x.strip(".gorw")                    #B
'python'

06.4.4 Przeszukiwanie łańcuchów znaków

>>> x = "chochliki"
>>> x.find("ch")
0
>>> x.find("rz")
-1


>>> x = "chochliki"
>>> x.find("ch", 2)
3
>>> x.find("ch", 1, 2)
-1


>>> x = "chochliki"
>>> x.rfind("ch")
3


>>> x = "chochliki"
>>> x.count("ch")
2


>>> x = "chochliki"
>>> x.startswith("ch")
True
>>> x.startswith("h")
False
>>> x.endswith("ki")
True
>>> x.endswith("taki")
False


>>> x.endswith(("i", "a"))
True

06.4.5 Modyfikowanie łańcuchów znaków

>>> x = "chochliki"
>>> x.replace("ch", "+++")
'+++o+++liki'


>>> x = "~x ^ (y % z)"
>>> tablica = x.maketrans("~^()", "!&[]")
>>> x.translate(tablica)
'!x & [y % z]'

06.4.6 Zmienianie łańcuchów znaków przy użyciu operacji na listach

>>> tekst = "Witaj, świecie"
>>> lista_znaków = list(tekst)
>>> lista_znaków[6:] = []                    #A 
>>> lista_znaków.reverse()
>>> tekst = "".join(lista_znaków)
>>> print(tekst)                          #B
,jatiW

06.4.7 Przydatne metody i stałe

>>> x = "123"
>>> x.isdigit()
True
>>> x.isalpha()
False
>>> x = "M"
>>> x.islower()
False
>>> x.isupper()
True

06.5 Konwersja obiektów na łańcuchy znaków

>>> repr([1, 2, 3])
'[1, 2, 3]'
>>> x = [1]
>>> x.append(2)
>>> x.append([3, 4])
>>> 'lista x zawiera ' + repr(x)
'lista x zawiera [1, 2, [3, 4]]'

06.6.1 Metoda format i parametry pozycyjne

>>> "{0} to {1} {2}".format("Ambrozja", "pokarm", "bogów")    #1
'Ambrozja to pokarm bogów'
>>> "{{Ambrozja}} to {0} {1}".format("pokarm", "bogów")    #2
'{Ambrozja} to pokarm bogów'


06.6.2 Metoda format i parametry wskazywane po nazwie

>>> "{jedzenie} to pokarm {konsument}".format(jedzenie="Ambrozja", konsument="bogów")
'Ambrozja to pokarm bogów'


>>> "{0} jest pokarmem {konsument[1]}".format("Ambrozja", konsument=["ludzi", "bogów", "kogoś innego"])
'Ambrozja jest pokarmem bogów'


06.6.3 Specyfikatory formatowania

>>> "{0:10} jest pokarmem bogów".format("Ambrozja")    #1
'Ambrozja   jest pokarmem bogów'
>>> "{0:{1}} jest pokarmem bogów".format("Ambrozja", 10)    #2
'Ambrozja   jest pokarmem bogów'
>>> "{jedzenie:{szerokość}} jest pokarmem bogów".format(jedzenie="Ambrozja", szerokość=10)
'Ambrozja   jest pokarmem bogów'
>>> "{0:>10} jest pokarmem bogów".format("Ambrozja")    #3
'  Ambrozja jest pokarmem bogów'
>>> "{0:&>10} jest pokarmem bogów".format("Ambrozja")    #4
'&&Ambrozja jest pokarmem bogów'


06.7 Formatowanie łańcuchów znaków przy użyciu %

>>> "%s jest %s %s" % ("Ambrozja", "pokarmem", "bogów")
'Ambrozja jest pokarmem bogów'


>>> "%s jest %s %s" % ("Nektar", "napojem", "bogów")
'Nektar jest napojem bogów'
>>> "%s jest %s %s" % ("Brukselka", "pokarmem", "głupców")
'Brukselka jest pokarmem głupców'


>>> x = [1,2, "trzy"]
>>> "%s zawiera: %s" % ("lista", x)
"lista zawiera: [1, 2, 'trzy']"

06.7.1 Korzystanie z sekwencji formatowania

>>> "Pi ma wartość <%-6.2f>" % 3.14159 # wykorzystanie sekwencji: %-6.2f
'Pi ma wartość <3.14  >'

06.7.2 Parametry przekazywane przez nazwę i sekwencje formatujące

>>> słownik_liczb = {'e': 2.718, 'pi': 3.14159}
>>> print("%(pi).2f - %(pi).4f - %(e).2f" % słownik_liczb)
3.14 - 3.1416 - 2.72


06.8 Interpolacja łańcuchów znaków

>>> wartość = 42
>>> wiadomość = f"Odpowiedzią jest {wartość}"
>>> print(wiadomość)
Odpowiedzią jest 42

>>> print(f"pi ma wartość {pi:{10}.{2}}")
pi ma wartość        3.1

06.9 Typ bytes

>>> a_z_ogonkiem_w_unicode = '\N{LATIN SMALL LETTER A WITH OGONEK}' 
>>> a_z_ogonkiem_w_unicode
'ą'
>>> xb = a_z_ogonkiem_w_unicode.encode()    #1
>>> xb
b'\xc4\x85'    #2
>>> xb += "A"    #3
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can't concat str to bytes
>>> xb.decode()    #4
'ą'


