我的日誌文件中包含類似下面創建日誌文件蟒蛇CSV頭
Info1:NewOrder|key:123 |Info3:10|Info5:abc
Info3:10|Info1:OldOrder| key:456| Info6:xyz
Info1:NewOrder|key:007
我想將其更改爲CSV像下面(每一行中一些信息,如果我給關鍵,因爲所需的信息1,INFO3頭)
key,Info1.Info3
123,NewOrder,10
456,OldOrder,10
007,NewOrder,
早些時候,我使用awk來獲取字段值,但日誌記錄可以更改信息和鍵在一行中打印的順序。所以我不能確定Info3會永遠在某個特定的列中。每次記錄更改時,都需要更改腳本。
我打算然後在熊貓數據框中加載csv。所以Python解決方案會更好。這更多的是從日誌文件生成csv的數據清理任務。
這是我讀
import csv
import sys
with open(sys.argv[1], 'r') as myLogfile:
log=myLogfile.read().replace('\n', '')
requested_columns = ["OrderID", "TimeStamp", "ErrorCode"]
def wrangle(string, requested_columns):
data = [dict([element.strip().split(":") for element in row.split("|")]) for row in string.split("\n")]
body = [[row.get(column) for column in requested_columns] for row in data]
return [requested_columns] + body
outpath = sys.argv[2]
open(outpath, "w", newline = "") with open(outpath, 'wb')
writer = csv.writer(file)
writer.writerows(wrangle(log, requested_columns))
樣品日誌文件= https://ideone.com/cny805
謝謝,但我得到'TypeError:參數1必須是一個迭代器' – pythonRcpp
你使用的是哪個版本的Python?還有你在哪一行得到錯誤?我已經在Python 2.7.6和Python 3.5.2中測試過了。 –
Python 2.7.5帶有2行的示例日誌文件(符號爲:而不是=):https://ideone.com/cny805需要的列可以是OrderID,Timestamp,ErrorCode – pythonRcpp