Strings brutas do Python

Resumo : neste tutorial, você aprenderá sobre strings brutas do Python e como usá-las para lidar com strings que tratam barras invertidas como caracteres literais.

Introdução às strings brutas do Python

Em Python, quando você prefixa uma string com a letra rou Ralgo como r'...'e R'...', essa string se torna uma string bruta. Ao contrário de uma string normal, uma string bruta trata as barras invertidas ( \) como caracteres literais.

Strings brutas são úteis quando você lida com strings que possuem muitas barras invertidas, por exemplo, expressões regulares ou caminhos de diretório no Windows.

Para representar caracteres especiais, como tabulações e novas linhas, Python usa a barra invertida ( \) para indicar o início de uma sequência de escape. Por exemplo:

s = 'lang\tver\nPython\t3'
print(s)Linguagem de código:  Python  ( python )

Saída:

lang    ver
Python  3Linguagem de código:  Python  ( python )

No entanto, strings brutas tratam a barra invertida ( \) como um caractere literal. Por exemplo:

s = r'lang\tver\nPython\t3'
print(s)Linguagem de código:  Python  ( python )

Saída:

lang\tver\nPython\t3Linguagem de código:  Python  ( python )

Uma string bruta é como sua string normal com a barra invertida ( \) representada como barras invertidas duplas ( \\):

s1 = r'lang\tver\nPython\t3'
s2 = 'lang\\tver\\nPython\\t3'

print(s1 == s2) # TrueLinguagem de código:  Python  ( python )

Em uma string regular, Python conta uma sequência de escape como um único caractere:

s = '\n'
print(len(s)) # 1Linguagem de código:  Python  ( python )

No entanto, em uma string bruta, o Python conta a barra invertida ( \) como um caractere:

s = r'\n'
print(len(s)) # 2Linguagem de código:  Python  ( python )

Como a barra invertida ( \) escapa das aspas simples ( ') ou aspas duplas ( "), uma string bruta não pode terminar com um número ímpar de barras invertidas.

Por exemplo:

s = r'\'Linguagem de código:  Python  ( python )

Erro:

SyntaxError: EOL while scanning string literalLinguagem de código:  Python  ( python )

Ou

s = r'\\\'Linguagem de código:  Python  ( python )

Erro:

SyntaxError: EOL while scanning string literalLinguagem de código:  Python  ( python )

Use strings brutas para lidar com o caminho do arquivo no Windows

O sistema operacional Windows usa barras invertidas para separar caminhos. Por exemplo:

c:\user\tasks\newLinguagem de código:  Python  ( python )

Se você usar esse caminho como uma string normal, o Python emitirá vários erros:

dir_path = 'c:\user\tasks\new'Linguagem de código:  Python  ( python )

Erro:

SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \uXXXX escapeLinguagem de código:  Python  ( python )

Python trata \u no caminho como um escape Unicode, mas não conseguiu decodificá-lo.

Agora, se você escapar da primeira barra invertida, terá outros problemas:

dir_path = 'c:\\user\tasks\new'
print(dir_path)Linguagem de código:  Python  ( python )

Saída:

c:\user asks
ewLinguagem de código:  Python  ( python )

Neste exemplo, \té uma guia e \né a nova linha.

Para facilitar, você pode transformar o caminho em uma string bruta como esta:

dir_path = r'c:\user\tasks\new'
print(dir_path)Linguagem de código:  Python  ( python )

Converter uma string normal em uma string bruta

Para converter uma string regular em uma string bruta, você usa a função repr() integrada. Por exemplo:

s = '\n'
raw_string = repr(s)

print(raw_string)Linguagem de código:  Python  ( python )

Saída:

'\n'Linguagem de código:  Python  ( python )

Observe que a string bruta resultante tem aspas no início e no final da string. Para removê-los, você pode usar fatias:

s = '\n'
raw_string = repr(s)[1:-1]
print(raw_string)Linguagem de código:  Python  ( python )

Resumo

  • Prefixe uma string literal com a letra r ou R para transformá-la em uma string bruta.
  • Strings brutas tratam a barra invertida como um caractere literal.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *