Програмиране с Python: Основни типове и конструкции за управление
Author: Стефан Кънев и Николай Бачийски

# Тескстови низове

### „ Програмиране с Python“, ФМИ

#### 12.03.2008г.

# Текстови низове

Текстовите низове са поредици (като списъците например), които обаче не могат да бъдат променяни на място — immutable

    >>> sentence = "The quick brown fox jumps over the lazy dog"
    >>> sentence[4]
    'q'
    >>> sentence[-1] = 't'

    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: 'str' object does not support item assignment
    >>> for x in sentence: print x,
    T h e   q u i c k   b r o w n   f o x   j u m p s   o v e r   t h e   l a z y   d o g
    >>> sentence[-1:-4:-1]
    'god'
    >>> 'fox' in sentence
    True

# Съединяване (конкатенация)

- Низове се съединяват с оператора `+`

      firstName, lastName = "Eric", "Idle"
      print firstName + " " + lastName # "Eric Idle"

- Не можете да съберете низ с нещо друго — трябва предварително да го преобразувате:

      >>> heading, answer = "The answer: ", 42
      >>> print heading + answer

      Traceback (most recent call last):
        File "<stdin>", line 1, in <module>
      TypeError: cannot concatenate 'str' and 'int' objects
      >>> print heading + str(answer)
      The answer: 42

# Форматиране (1)

Подобно е по функционалност на `printf` в C

Синтаксис: `форматен низ % стойностите в n-торка`

Примери:

    >>> "This is %d %s bird!" % (1, 'dead')
    This is 1 dead bird!
    >>> exclamation = "Ni"
    >>> "The knights who say %s!" % exclamation
    'The knights who say Ni!"

Параметрите могат да бъдат различни в зависимост от типа им:

- `%s` — текстов низ
- `%r` — текстов низ, но с `repr()`
- `%d`, `%i` — цели числа
- `%f` — число с плаваща запетая
- `%%` — процент (%)

# Форматиране (2)

Същият механизъм работи може да работи и с речници

    >>> "%(adjective)s %(noun)s" % {'adjective': 'Black',
          'noun': 'Knight'}
    Black Knight
    >>> def word(adjective, noun):
    ...     print "%(adjective)s %(noun)s" % vars()
    >>> word('Black', 'Knight')
    Black Knight

# Методи (1)

Преобразувания

    >>> string = 'my Dead Parrot'
    >>> string.capitalize() # Първата буква главна, другите малки
    'My dead parrot'
    >>> string.title() # Всички думи започват с главна буква
    'My Dead Parrot'
    >>> string.upper() # Прави всички букви главни
    'MY DEAD PARROT'
    >>> string.lower() # Прави всички букви малки
    'my dead parrot'
    # дава ни списък с отделните части на низа, разделени с аргумента на split
    >>> string.split(' ')
    ['my', 'Dead', 'Parrot']

# Методи (2)

Премахване на символи отляво или отдясно.

    >>> spam = "  S P A M   "
    >>> spam.strip()
    'S P A M'
    >>> spam.lstrip()

По подразбиране премахва white-space, но може и да му се каже изрично низ със символи, които да премахне.

    'S P A M   '
    >>> "He said:muuuuuuuuuu".rstrip('mu')
    'He said:'

# Методи (3)

Търсене из низа

    >>> message = "Be vewy vewy quiet. I'm hunting for wabbits!"
    >>> string.startswith('Be') # Проверява дали string започва с 'my'
    True
    >>> string.endswith('bits!') # Проверява дали string завършва на 'bits!'
    True
    >>> message.find('vewy')
    3
    >>> message.index('vewy')
    3
    >>> message.rfind('vewy')
    8
    >>> message.rindex('vewy')
    8
    >>> message.replace('wabbits', 'Buggs Bunny')
    "Be vewy vewy quiet. I'm hunting for Buggs Bunny!"