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().