Строки в Python

Сегодня начну серию постов о строках в языке программирования. Ниже буду дополнять данный пост ссылками на новые посты по частным вопросами и случаями. Здесь же вводная часть о строках.

Что такое строки в python?

Как и во многих языках программирования, строка в python является массивом символов. Со своими «особенностями», которые попробую рассмотреть. По сути можно было бы сказать, что строка ‘ABCD’ — это то же самое, что и массив [‘A’, ‘B’, ‘C’, ‘D’]. Но не тут то было. Как и в массиве, из строки можно получить символ по индексу.

# Определяем массив
arr = ['a', 'b', 'c', 'd']
# Получаем элемент массива по индексу
arr[2] # результат == c

# Определяем строку
pstring = 'abcd'
# Получаем символ по индексу
pstring[2] # результат == c

Но если в массиве можно изменить элемент, обратившись к нему по индексу, то со строкой такой фокус не пройдет.

arr[2] = 'r'
# arr == ['a', 'b', 'r', 'd']

pstring[2] = 'r'
# Получим ошибку
'''
Traceback (most recent call last)
    ..............................
TypeError.........................
'''

Есть два варианта изменения строк: Замена с помощью функции replace и, если уж очень хочется работать со строкой как с массивом, переопределение с помощью конкатенации:

pstring = pstring.replace('c', 'r')

# или

pstring = pstring[:2] + 'r' + pstring[3:]

Кодировка символов в python

Кодировке следует уделить отдельную тему для разговора. Это достаточно не простой вопрос. Но здесь я хотел бы затронуть вот какой момент. Сейчас ( по слухам начиная с версии 2.3 ) по умолчанию python работает с кодировкой ASCII. Это прекрасно, если вы пишете всё на английском для американцев и не выходите за пределы их кодировки. Но мы же с вами — люди мира. Если у нас китайцы захотят заказать программу, мы же не откажем им?!

Для этого в самом начале программы (файла) следует указать кодировку. Для русского языка, в частности и в основном, это будет:

# -*- coding: cp1251 -*-

Я же предпочитаю и всем рекомендую использовать юникод (unicode):

# -*- coding: utf8 -*-

Но это на случай, если вы не пользуетесь функциями интернационализации (см. gettext).

Конкатенация (объединение строк) в python

Этому явлению я не буду уделять слишком много внимания, ибо можно обойтись парой строк. Конкатенация строк в python производится с помощью обычного оператора +

pstring1 = 'ab'
pstring2 = 'cd'
pstring = pstring1 + pstring2
pstring # 'abcd'

pstring += 'ef'
pstring # 'abcdef'

Здесь, мне кажется, всё должно быть предельно ясно.

Резюмируем:

В этом коротеньком посте мы узнали, что строка — это массив символов, который не всегда ведет себя как массив. Для того, чтобы показать насколько легко работать со строками в python, я буду дополнять данный пост ссылками на частные вопросы по работе со строками python.

Ссылки

  1.  Python: преобразование строки в число
  2. Python: поиск в строке

Kamo Petrosyan Автор

Добавить комментарий

Ваш e-mail не будет опубликован.