python - 从日志写入 csv 时替换字符串

标签 python string csv replace

我正在尝试使用 python ( mainly this example ) 将日志文件转换为 csv

import csv

with open('/home/user/Downloads/my.log') as file:
    lines = file.read().splitlines()
    lines = [lines[x:x+2] for x in range(0, len(lines), 3)]

    with open('test.csv', 'w+') as csvfile:
        w = csv.writer(csvfile)
        w.writerows(lines)
        print "done"

我的原始日志文件如下所示:

2017-08-09 -> 11:30:01
Temp=29.0*  Humidity=30.0%

2017-08-09 -> 11:40:01
Temp=29.0*  Humidity=33.0%

从上面的示例代码,我可以将其转换成这种格式

2017-08-08 -> 08:50:01,Temp=33.0*  Humidity=38.0%
2017-08-08 -> 09:00:01,Temp=37.0*  Humidity=40.0%

但我需要我的最终 csv 看起来像这样

2017-08-08,08:50:01,33.0*,38.0%, 
2017-08-08,09:00:01,37.0*,40.0%

我使用了 lines = lines.replace("->",",") 并且得到了

AttributeError: 'list' object has no attribute 'replace'

据我了解,python 无法替换其在内存中处理的文本文件。那我能做什么?我可以用什么方法来净化最终文本?

我的python知识没有进阶,还在学习中。因此,如果有错误或遗漏的步骤,请指正。

提前致谢

最佳答案

更新:完整修改代码

with open('/home/user/Downloads/my.log') as file, open("output.csv", "w") as outfile:
    lines = file.readlines()
    lines = [','.join([i.strip() for i in lines[x:x+2]]) for x in range(0, len(lines), 3)]
    lines = [i.replace("->",",").replace(" ","").replace("Temp=","").replace("Humidity=",",") for i in lines]

    outfile.write("Date,Time,Temp,Humidity")

    for line in lines:
        outfile.write(line)

输出

Date,Time,Temp,Humidity
2017-08-08,08:50:01,33.0*,38.0%
2017-08-08,09:00:01,37.0*,40.0%

工作环示例

datafile="""2017-08-09 -> 11:30:01
Temp=29.0*  Humidity=30.0%

2017-08-09 -> 11:40:01
Temp=29.0*  Humidity=33.0%"""

lines = io.StringIO(datafile).readlines()
lines = [','.join([i.strip() for i in lines[x:x+2]]) for x in range(0, len(lines), 3)]
lines = [i.replace("->",",").replace(" ","").replace("Temp=","").replace("Humidity=",",") for i in lines]
lines

返回:

['2017-08-09,11:30:01,29.0*,30.0%', '2017-08-09,11:40:01,29.0*,33.0%']

关于python - 从日志写入 csv 时替换字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45584064/

相关文章:

python - 如何用python控制windows中的特定USB端口?

python - 是否可以更改 tkinter 中菜单的字体?

python - memcached 中对象的最佳序列化方法是什么?

javascript - 如何通过 Google Chart API 使用 csv 文件?

python - One2Many 字段 Odoo 不规则

swift - 如何在 swift 4 中删除字符串开头/结尾(第一个/最后一个)的特殊字符

ios - 字符串中的表情符号数量?

python - 在 Pandas 中读取带有逗号和字符的 CSV 文件时出现问题

python - 使用python进行csv文件的数据积累

c# - String.Split 效率问题