python Vs bash string fatiamento

2

Meu arquivo a contém o texto

bcd\\.

Com o bash, eu leio o arquivo e imprimo os caracteres da 4ª para a 8ª posição,

tmp=$(cat a)
echo "${tmp:3:4}"

Imprime,

\\

Tudo feliz. Agora eu uso o corte de matriz do Python para imprimir caracteres da 4ª a 8ª posição,

>>> f = open('a')
>>> v=f.read()
>>> v[3:7]

Imprime,

'\\\\'

Por que o bash e o python se comportam de maneira diferente quando há barras invertidas?

    
por Madhavan Kumar 11.09.2015 / 21:07

1 resposta

4

É uma questão de como o python exibe strings. Observe:

>>> f = open('a')
>>> v=f.read()
>>> v[3:7]
'\\\\'
>>> print v[3:7]
\\

Ao exibir v[3:7] , as barras invertidas são escapadas. Ao imprimir, print v[3:7] , eles não são escapados.

Outros exemplos

A linha no seu arquivo deve terminar com um caractere de nova linha. Nesse caso, observe:

>>> v[-1]
'\n'
>>> print v[-1]


>>> 

O caractere de nova linha é exibido como uma barra invertida-n. Imprime como uma nova linha.

Os resultados para a guia são semelhantes:

>>> s='a\tb'
>>> s
'a\tb'
>>> print s
a       b
    
por 11.09.2015 / 21:27