使用python处理分隔符

2024-10-03 13:25:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在尝试以我通常无法执行的格式解析apache日志。(尝试使用goaccess)

在sublime it中,分隔符显示为ENQ、SOH和ETX,我的理解是“|”、空格和上标L重新分割把日志的各个组成部分分开,但我不知道如何处理带上标的L

在sublime上它显示为3286d68255beaf010000543a000012f1/Madonna_Home_1.jpgENQx628a135bENQZ1e5ENQAB50632SOHA50.134.214.130SOHC98.138.19.91SOHD42857ENQwwww.newprophecy.net...

当我在纯文本编辑器(如记事本)中打开文件时,ENQ为“|”,SOH为“”

我只需要解析出IP地址,这样剩下的部分基本上就不相关了。在

目前我有

pkts = re.split("\s|\\|")

但我不知道该怎么办


Tags: homeapache格式itsublime空格分隔符标的
1条回答
网友
1楼 · 发布于 2024-10-03 13:25:17

这些3个字母的代码是ASCII控制代码-这些是ASCII字符集中出现在32(空格字符)之前的ASCII字符。您可以找到a full list online。在

这些字符与任何可打印的字符不对应,因此假设它们对应于这些字符是不正确的。您可以使用\x00符号将它们称为几种语言中的文本—例如,控制代码ETX对应于\x03(请参阅上面链接的参考)。你可以用这些来分割字符串或其他任何东西。在

这是您问题的字面回答,但除此之外,我发现您不太可能需要使用控制代码来分割Apache日志文件。据猜测,实际发生的事情可能是som Unicode字符以某种方式悄悄地进入了日志文件,也许是UTF-8编码。编码是用多个字节编码扩展字符来表示超出单字节255限制的字符的一种方法。在

有几种编码方式,但UTF-8是最流行的编码方式之一。如果您使用UTF-8,它的特性是标准ASCII字符将正常显示(因此您可能永远不会意识到使用的是UTF-8),但是如果您在不支持UTF-8的编辑器中查看文件(或错误地将文件标识为纯ASCII),那么您将看到这些奇怪的控制代码。在这些地方,代码和代码前后的字符应该一起解释为一个单元。在

我不确定这是为什么,这只是一个有根据的猜测,但如果你还没有考虑过,那么找出你的文件编码是很重要的,因为它会影响你如何解释它的整个内容。我建议将该文件加载到一个能够理解编码的编辑器中(我确信在适当的配置下,Sublime会像Sublime一样流行),并强制将编码转换为UTF-8,看看这是否会使内容看起来更合理。在

相关问题 更多 >