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

相关内容