2.4. Strings#

Uma string é uma sequência de caracteres Unicode escrita entre aspas. As aspas simples e as aspas duplas são equivalentes – escolha o estilo que evita ter de escapar as aspas que aparecem dentro do texto:

name    = "OpenMV Cam"
company = 'OpenMV, LLC'
message = "She said \"hi\""        # both styles can be used
same    = 'She said "hi"'

As strings entre aspas triplas ("""...""" ou '''...''') abrangem múltiplas linhas e preservam as quebras de linha literalmente:

banner = """boot ok
firmware v1.28
"""
print(banner)

Saída:

boot ok
firmware v1.28

2.4.1. Sequências de escape#

Dentro de uma string normal, \ introduz um carácter especial:

  • \n – nova linha

  • \t – tabulação

  • \\ – uma barra invertida literal

  • \' / \" – uma aspa literal (quando de outra forma terminaria a string)

  • \xHH – o carácter com o código hexadecimal HH

  • \uHHHH – o ponto de código Unicode HHHH

Quando uma string contém muitas barras invertidas, prefixe o literal com r para torná-la uma string raw. As barras invertidas são então tratadas literalmente – \n permanece como dois caracteres em vez de ser substituído por uma nova linha:

win_path = r"C:\Users\OpenMV\camera.py"
literal  = r"\n is two characters, not a newline"

2.4.2. Concatenação e repetição#

Duas strings são unidas com +; uma string é repetida com *:

greeting = "Hello, " + name + "!"
line     = "-" * 40              # 40-character separator

O uso repetido de + num ciclo aloca uma nova string a cada iteração. Para construir strings maiores a partir de muitas partes, use str.join().

2.4.3. Comprimento, indexação e fatiamento#

len() devolve o número de caracteres de uma string. A indexação com [] devolve uma string de um único carácter na posição indicada; índices negativos contam a partir do fim:

>>> s = "OpenMV"
>>> len(s)
6
>>> s[0]
'O'
>>> s[-1]
'V'

Um slice s[start:stop] devolve a substring desde a posição start até, mas não incluindo, stop. Qualquer das extremidades pode ser omitida para significar «o início» ou «o fim», e um terceiro valor opcional s[start:stop:step] permite saltar caracteres.

The string "OpenMV" with position markers between each character, illustrating how a slice selects the characters between two positions.

As posições do slice ficam entre os caracteres. s[2:5] seleciona os caracteres nas posições 2, 3 e 4.#

>>> s = "OpenMV"
>>> s[2:5]
'enM'
>>> s[:3]
'Ope'
>>> s[3:]
'nMV'
>>> s[::-1]
'VMnepO'                     # whole string, reversed

Um slice fora do intervalo devolve silenciosamente a parte que existe – s[100:200] é a string vazia "", não um erro. A indexação fora do intervalo, por outro lado, lança IndexError.

2.4.4. Imutabilidade#

As strings não podem ser modificadas no local. As operações que parecem modificar uma string devolvem na realidade uma nova string e deixam a original intacta:

>>> name = "OpenMV"
>>> name.upper()
'OPENMV'
>>> name
'OpenMV'                     # unchanged

Para «alterar» uma string, rebindamos o nome ao novo valor: name = name.upper().