当Python说有2个换行符时,为什么还没有2个新行呢?

时间:2014-04-11 18:24:37

标签: python python-2.7 tomcat7 hexdump

我从网络API中获取了一些文字,让我感到困惑的是我试图使用Python在双重换行符上拆分段落。

这是有趣文字的最小样本:

>>> print my_string
e

N

看起来像2个换行符,Python同意:

>>> print my_string.count('\n')
2

尝试用另一个分隔符替换换行符。我期待eaaN

>>> print my_string.replace('\n', 'a')
aN

怪异。这是十六进制文本:

87654321  0011 2233 4455 6677 8899 aabb ccdd eedff  0123456789abcdef
00000000: 650a 0a4e                                 e..N

我很想看十六进制的东西,但我看到两个0a个字符,我期待它们,没有其他控制字符(所以没有CRLF难度)。

文本中有什么内容或Python对它们的解释我不知道吗?

作为一个控件,我在Idle中键入了相同的字符串并尝试了相同的功能:

my_string = """e

N"""
>>> my_string.count('\n')
2
>>> my_string.replace('\n', 'a')
'eaaN'

Web API是Tomcat的JMX界面。这是我用来查询API的路径(我知道它已经转义了URI,但没关系):

manager/jmxproxy?qry=Catalina:j2eeType=WebModule,name=//localhost/*,J2EEApplication=none,J2EEServer=none

谢谢。

解决方案

他们是CRLF的:

>>> print repr(my_string)
'e\r\n\r\nN'

我欺骗自己"复制粘贴"从解释器到Emacs的文本,我在那里进行了十六进制分析。写入文件,然后在Emacs中打开,向我展示了我的错误。

0 个答案:

没有答案