내 파일에는 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