събота, 17 януари 2009 г.

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


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

12.03.2007г.

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

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

>>> sentence = "The quick brown fox jumps over the lazy dog"
>>> sentence[4]
'q'
>>> sentence[-1] = 't'
Traceback (most recent call last):
File "", line 1, in
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 "", line 1, in
    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!"

Няма коментари:

Публикуване на коментар