Haikson

[ Everything is possible. Everything takes time. ]

Строки в 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: поиск в строке