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 r
ou R
algo 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 3
Linguagem 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\t3
Linguagem 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) # True
Linguagem 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)) # 1
Linguagem 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)) # 2
Linguagem 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 literal
Linguagem de código: Python ( python )
Ou
s = r'\\\'
Linguagem de código: Python ( python )
Erro:
SyntaxError: EOL while scanning string literal
Linguagem 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\new
Linguagem 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 escape
Linguagem 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
ew
Linguagem 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.