从日志文件中的行中提取逗号分隔的值-python

时间:2019-01-03 12:07:32

标签: python

我有一个日志文件,需要将用逗号分隔的值分成多个单独的值数组,以便以后进行绘图。日志文件每秒写入一次

数据格式如下:

Time, Bx, By, Bz, Status
2147483894.995726, 3424, 3424, 3424, 128
2147483895.9957414, 3552, 3552, 3552, 128
2147483896.995726, 3680, 3680, 3680, 128
2147483897.995711, 3808, 3808, 3808, 128
2147483898.9956956, 3936, 3936, 3936, 128
2147483899.9956803, 4064, 4064, 4064, 128

做到这一点的最佳方法是什么?常用表达?我尝试使用line.rsplit,但只能提取最后一列。

任何帮助表示赞赏!谢谢

3 个答案:

答案 0 :(得分:2)

我强烈建议您使用熊猫。如果没有,只需pip install pandas。然后,假设您的csv名为test.csv,请运行以下代码:

import pandas as pd

df = pd.read_csv("test.csv", sep=',')

现在,df是pandas dataframe,原始文件中的每一行都是一行。您可以iterate通过他们来完成您想要的。例如:

for index, row in df.iterrows():
    print(row)

Output: 
    Time, Bx, By, Bz, Status    2147483894.995726, 3424, 3424, 3424, 128
    Name: 0, dtype: object
    Time, Bx, By, Bz, Status    2147483895.9957414, 3552, 3552, 3552, 128
    Name: 1, dtype: object
    Time, Bx, By, Bz, Status    2147483896.995726, 3680, 3680, 3680, 128
    Name: 2, dtype: object
    Time, Bx, By, Bz, Status    2147483897.995711, 3808, 3808, 3808, 128
    Name: 3, dtype: object
    Time, Bx, By, Bz, Status    2147483898.9956956, 3936, 3936, 3936, 128
    Name: 4, dtype: object
    Time, Bx, By, Bz, Status    2147483899.9956803, 4064, 4064, 4064, 128
    Name: 5, dtype: object

答案 1 :(得分:1)

您可以使用csv模块并使用功能csv.reader

答案 2 :(得分:1)

熊猫不会在这里帮助您吗?

import pandas as pd
df=pd.read_csv("log.csv")