我的文件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