Pular para o conteúdo

Como usar strings raw em Python facilmente

[

O que são strings raw em Python?

Se você já se deparou com uma string literal padrão prefixada com a letra minúscula r ou a letra maiúscula R, então você encontrou uma string raw do Python:

# Exemplo de string raw
>>> r"Esta é uma string raw"
'Esta é uma string raw'

Embora uma string raw se pareça e se comporte principalmente da mesma forma que uma string literal normal, há uma diferença importante na forma como o Python interpreta alguns dos seus caracteres, que você explorará neste tutorial.

Observe que não há nada de especial sobre o objeto de string resultante. Independentemente de você declarar seu valor literal usando um prefixo ou não, você sempre terminará com um objeto str Python regular.

Outros prefixos disponíveis, que você pode usar e às vezes até misturar em suas strings literais do Python, incluem:

  • b: literal de bytes
  • f: literal de string formatada
  • u: literal de strings Unicode legado (PEP 414)
# Exemplo de strings literais
>>> david = 'Ela disse "Eu te amo" para mim.'
>>> alice = "Ah, isso é maravilhoso de ouvir!"

Ter essa escolha pode ajudá-lo a evitar um erro de sintaxe quando seu texto inclui um desses caracteres delimitadores (' ou "). Por exemplo, se você precisa representar um apóstrofo em uma string, então você pode colocar seu texto entre aspas duplas. Alternativamente, você pode usar strings multilinhas para misturar ambos os tipos de delimitadores no texto.

# Exemplo de string literal multilinha
>>> poema = """
... Bonito é melhor do que feio.
... Explícito é melhor do que implícito.
... Simples é melhor do que complexo.
... Complexo é melhor do que complicado.
... """

Independentemente do tipo de delimitador de sua escolha, você sempre pode adicionar um prefixo à sua string literal. Apenas certifique-se de não haver espaço entre as letras do prefixo e a aspa de abertura.

Quando você usa a letra r como prefixo, você transformará a string literal correspondente em uma string raw. Então, o que são exatamente as strings raw do Python?

Bônus Gratuito: [Clique aqui para baixar um cheatsheet/) que mostra os sequências de caracteres de escape mais comuns.

Em Resumo: Strings Raw do Python Ignoram Sequências de Caracteres de Escape

Em Python, uma string Raw é uma string literal que ignora a interpretação de sequências de caracteres de escape. Em vez disso, todas as barras invertidas (\) presentes na string são tratadas literalmente. Isso significa que a sequência \n será interpretada como uma barra invertida seguida por um “n” e não como uma quebra de linha, por exemplo.

Embora o Python interprete várias sequências de caracteres de escape, como \n, \t e \\, como algo especial em uma string literal normal, essas mesmas sequências são tratadas como caracteres comuns em uma string raw.

Como as Strings Raw Podem Ajudar a Especificar Caminhos de Arquivos no Windows?

Uma das principais vantagens de usar strings raw é a capacidade de especificar caminhos de arquivos sem precisar se preocupar com as sequências de caracteres de escape do Windows. Por exemplo, ao lidar com caminhos de arquivos que contêm barras invertidas, você pode usar uma string raw para tornar o código mais legível e evitar erros de sintaxe:

# Exemplo de especificação de caminho de arquivo com string raw
>>> file_path = r"C:\Users\username\Documents\file.txt"

Observe que, se você optar por usar uma string literal normal, precisará duplicar todas as barras invertidas no caminho do arquivo para garantir que elas sejam interpretadas corretamente:

# Exemplo de especificação de caminho de arquivo com string literal normal
>>> file_path = "C:\\Users\\username\\Documents\\file.txt"

Com strings raw, você não precisa se lembrar de escapar todas as barras invertidas manualmente. Isso simplifica o processo de escrever e interpretar caminhos de arquivos em seu código Python.

Como as Strings Raw Podem Ajudar a Escrever Expressões Regulares?

As strings raw podem ser particularmente úteis ao escrever expressões regulares em Python. As expressões regulares frequentemente usam várias sequências de caracteres de escape, como \, - e (, que podem ser confusas e difíceis de ler em uma string literal normal.

Com strings raw, você não precisa se preocupar com a interpretação especial desses caracteres. Veja um exemplo de uma expressão regular que usa uma string raw para encontrar todas as ocorrências de números de telefone em um texto:

# Exemplo de expressão regular com string raw
import re
phone_numbers = re.findall(r"\d{3}-\d{3}-\d{4}", text)

Observe como a sequência de escape \d não é interpretada como um caractere especial neste caso, mas sim como uma sequência de dois caracteres (\ e d). Isso torna a expressão regular mais legível e menos suscetível a erros de sintaxe.

O que você deve observar ao usar Strings Raw?

Embora as strings raw forneçam uma maneira conveniente de lidar com sequências de caracteres de escape, é importante ter cuidado ao usá-las. Aqui estão algumas coisas a serem observadas:

  • As barras invertidas no final de uma string raw são interpretadas literalmente. Isso significa que r"string\" resultará em um erro de sintaxe. Para incluir uma barra invertida no final de uma string raw, adicione uma barra invertida adicional: r"string\\".
  • As strings raw não afetam a interpretação dos caracteres especiais fora de sequências de escape. Por exemplo, r"This is a \n new line" não será impresso como uma nova linha, mas sim como a sequência exata de caracteres \n na saída.
  • Se você misturar strings normais e strings raw em uma mesma expressão, o Python tratará cada uma delas de acordo com seu tipo. Por exemplo, ao concatenar uma string normal com uma string raw, o resultado será uma nova string normal.

Tenha em mente essas observações quando estiver trabalhando com strings raw para evitar comportamentos inesperados ou erros de sintaxe em seu código.

Quando você deve escolher Bytes Raw em vez de Literais de String Raw?

Além das strings raw, o Python também suporta literais de bytes raw usando o prefixo br. Esses literais de bytes raw são usados quando você precisa trabalhar com dados binários em vez de texto. Por exemplo, ao ler ou gravar arquivos binários, você pode usar literais de bytes raw para garantir que os dados sejam tratados corretamente.

# Exemplo de literal de bytes raw
file_path = br"C:\Users\username\Documents\file.bin"

Observe que os literais de bytes raw usam o prefixo br, diferente das strings raw que usam o prefixo r. Isso garante que o Python interprete os dados como bytes, em vez de caracteres.

No entanto, é importante mencionar que o uso de literais de bytes raw é mais especializado e menos comum do que o uso de strings raw. Na maioria dos casos, você estará trabalhando com texto e poderá usar as strings raw para manipular sequências de caracteres de escape.

Quais são as sequências de caracteres de escape comuns?

Embora as strings raw ignorem a interpretação de sequências de caracteres de escape, é útil conhecer as sequências de caracteres de escape comuns em Python. Aqui estão algumas das sequências de caracteres de escape mais usadas:

  • \n: nova linha
  • \t: tabulação horizontal
  • \\: barra invertida
  • \': apóstrofo
  • \": aspas duplas
  • \xhh: caractere em hexadecimal, onde hh é o valor hexadecimal do caractere
  • \uhhhh: caractere Unicode em hexadecimal, onde hhhh é o valor hexadecimal do caractere (só pode ser usado em strings Unicode)
  • \N{id}: nome de caractere Unicode, onde id é o nome do caractere (só pode ser usado em strings Unicode)

Essas sequências de caracteres de escape podem ser úteis ao lidar com determinados caracteres especiais ou ao gerar saída formatada em seu código Python.

Conclusão

As strings raw do Python são uma ferramenta útil para lidar com sequências de caracteres de escape em suas strings literais. Elas permitem que você especifique caminhos de arquivos no Windows de forma mais legível, escreva expressões regulares mais claras e evite a necessidade de escapar manualmente certos caracteres especiais.

Embora as strings raw forneçam uma maneira conveniente de lidar com sequências de caracteres de escape, observe as peculiaridades e limitações ao usá-las. Misturar strings normais com strings raw pode levar a resultados inesperados e certas sequências de caracteres de escape não serão interpretadas como caracteres especiais em strings raw.

É importante aprender sobre strings raw e como usá-las corretamente, pois elas podem melhorar a legibilidade e a manutenção do seu código Python. Ao escrever programas que envolvam caminhos de arquivos, expressões regulares ou outros casos em que sequências de caracteres de escape são comuns, as strings raw podem ser uma ferramenta poderosa em seu arsenal de programação Python.