【发布时间】:2019-05-29 16:16:06
【问题描述】:
我的日志文件中有一些多行字节串,比如
[2019-05-25 19:16:31] b'logstring\r\n\r\nmore log'
尝试提取原始多行字符串后,如何将其转换为真实字符串 使用 Python 3?
作为一个简化的示例,在读取日志文件并剥离时间之后,我最终得到了一个类型为 str 且具有 b' 前缀的变量,作为字符串。
# note: b'' is inside the str (taken from log)
tmp = "b'logstring\r\n\r\nmore log'"
# convert here
print(tmp)
我正在寻找一种方法来告诉 python 内容需要被解码。但是 str 不允许解码。
我想从打印命令中看到的结果是
logstring
more log
更新:“eval”函数会产生这个结果,但这会执行代码,所以不安全。
# note: b'' is inside the str (taken from log)
tmp = "b'logstring\r\n\r\nmore log'"
tmp = eval(tmp)
print(tmp)
有没有更好的办法?
【问题讨论】:
-
谢谢迈克,但这无济于事。导入的文本是字符串格式,因为“b”是日志文件的一部分。您链接到的问题没有解决这个问题
-
你应该修复任何产生这个问题的东西。使用
eval是破解此问题解决方案的最直接方法。如果安全是一个问题,则使用import ast; ast.literal_eval安全地评估表示字节文字的字符串,然后对其进行解码,但同样,修复此问题的根源。 -
谢谢,这行得通。关于修复源,我正在解析(现有)日志文件以提取数据,因此无法修复源。
标签: python python-3.x