我从网络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中打开,向我展示了我的错误。