Python 및 Bash 문자열 슬라이싱

Python 및 Bash 문자열 슬라이싱

내 파일에는 a텍스트가 포함되어 있습니다.

bcd\\\\.

Bash를 사용하여 파일을 읽고 다음과 같이 4번째부터 8번째 위치까지의 문자를 인쇄합니다.

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

그것은 인쇄됩니다,

\\\\

모두 매우 행복합니다. 이제 Python의 배열 슬라이싱을 사용하여 다음과 같이 4번째 위치에서 8번째 위치까지 문자를 인쇄합니다.

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

그것은 인쇄됩니다,

'\\\\\\\\'

백슬래시가 있을 때 bash와 Python이 다르게 동작하는 이유는 무엇입니까?

답변1

이것은 Python이 문자열을 표시하는 방식에 문제가 있습니다. 관찰하다:

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

표시되면 v[3:7]백슬래시가 이스케이프됩니다. 인쇄되면 print v[3:7]이스케이프되지 않습니다.

다른 예

파일의 줄은 개행 문자로 끝나야 합니다. 이 경우 다음 사항을 준수하십시오.

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


>>> 

개행 문자는 백슬래시-n으로 표시됩니다. 개행 문자로 인쇄됩니다.

탭의 결과는 비슷합니다.

>>> s='a\tb'
>>> s
'a\tb'
>>> print s
a       b

관련 정보