2

我有一些从 Web 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 中打开向我展示了我的方式的错误。

4

0 回答 0