【发布时间】:2019-09-09 03:54:15
【问题描述】:
需要帮助转换带有 ANSI 颜色转义序列和日期时间戳标记的数据的日志文件。以下是文本中行的格式:
'\x1b[34m[SOME_INFO]\x1b[0m \x1b[36m[SOME_OTHR_INFO]\x1b[0m Thu Sep 09 00:59:12 XST some variable length message which might contain commas (,), etc.'
我在一个几乎无法访问 Internet 并使用 Python 2.7 的隔离网络上。
我浪费了几个小时 :(。我最接近的是使用 @Elliot Chance 的解决方案
re.sub(r'\x1b\[[\d;]+m', '', s)
这里提供Filtering out ANSI escape sequences如下:
t = re.sub(r'\x1b\[[\d;]+m', '~', s)
re.split(r'~|(Mon|Tue|Wed|Thu|Fri|Sat|Sun.*?\d{4})', t)
这并没有给我想要的东西。 上述代码的输出:
['',
None,
'[SOME_INFO]',
None,
' ',
None,
'[SOME_OTHR_INFO]',
None,
' ',
'Thu',
' Sep 09 00:59:12 XST some variable length message which might contain commas (,), etc.']
我要找的输出如下:
'SOME_INFO, SOME_OTHR_INFO, Thu Sep 09 00:59:12 XST, some variable length message which might contain commas (,), etc.
有没有办法使用pandas.read_csv() 或类似方法将数据加载到熊猫数据框?
注意:每行都以转义码开头,但每行中可能有可变字段(即,
SOME_INFO, SOME_OTHR_INFO, ANOTHER_INFO, etc. followed by the timestamp followed by free text).
【问题讨论】:
-
据我了解,您只想删除 "转义序列"?如此简单,使用re.Pattern.sub将其替换为空字符串
'' -
在您要查找的输出中,
SOME_INFO不再有方括号,即使方括号不是 ANSI 转义序列的一部分?删除它们的逻辑是什么? -
@stovfl,我们的想法是将这些数据转换为 CSV。我可以用任何其他字符串替换转义序列,但这并不能解决我的所有问题。
-
@Grismar,我可以保留括号,这不是主要问题,但只是想删除它们以获得干净的数据。我猜括号只是记录过程的产物。
-
@Kam: "每一行都以转义开头": 所以用
'\n'代替''。
标签: python python-2.7 text-parsing