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

„ Програмиране с 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

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

Форматиране (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!"

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

Форматиране (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!"