89547
  
  
以下ログをcsvに転記する方法を探しています。  
各リストの空白スペースを1に統一するところまでは出来たのですが、  
csvに転記するところで躓いております。  
何か良案がありましたらご教示頂けると助かります。

[code]

    data_list=
    ['12:00:01 AM kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty\n', '12:10:01 AM   9913200   6352688     39.06    575700   5111548   5230536     21.22    860532   4858452        32\n', '12:20:01 AM   9912084   6353804     39.06    575736   5111588   5230272     21.21    860552   4858432        12\n', ]
    
    for i in range(len(datalist)): 
          new_data = [" ".join(datalist[i].split(''))] 
    
    print(new_data)
    
    #出力結果#
    ['12:00:01 AM kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty']
    ['12:10:01 AM 9913200 6352688 39.06 575700 5111548 5230536 21.22 860532 4858452 32']
    ['12:20:01 AM 9912084 6353804 39.06 575736 5111588 5230272 21.21 860552 4858432 12']
    
[/code]


CC BY-SA 4.0
2022-06-23T06:34:04.887
89546
2022-06-27T01:33:55.800
2022-06-23T12:08:10.673
3060
51133
question
python csv
Python でログを CSV ファイルとして出力したい


pandasあるいはopenpyxlを調べてみてください。

ひとまず、目的の結果と思われるものが以下のソースコードで実現できたと思います。  
最初の時刻ヘッダ部分をtimeとmeridianに置き換えています。

ソースコード

[code]

    import pandas as pd
    import openpyxl
    
    log_list = [
        r'12:00:01 AM kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty',
        r'12:10:01 AM 9913200 6352688 39.06 575700 5111548 5230536 21.22 860532 4858452 32',
        r'12:20:01 AM 9912084 6353804 39.06 575736 5111588 5230272 21.21 860552 4858432 12',
    ]
    
    print(log_list)
    
    heading = log_list[0]
    logdata = log_list[1:]
    
    headings = heading.split()
    headings[0] = 'time'
    headings[1] = 'meridian'
    
    
    def export_excel():
        wb = openpyxl.Workbook()
        if wb.sheetnames:
            for sheet_name in wb.sheetnames:
                wb.remove(wb[sheet_name])
        ws = wb.create_sheet(title="log")
    
        for i, head in enumerate(headings):
            cell = ws.cell(1, i+1)
            cell.value = head
    
        for i, log_line in enumerate(logdata):
            log = log_line.split()
            for j, c in enumerate(log):
                cell = ws.cell(i+2, j+1)
                cell.value = c
    
        wb.save("log.xlsx")
    
        wb.close()
    
    
    def export_csv():
        data_list = [
            headings,
        ]
        for log_line in logdata:
            log = log_line.split()
            data_list.append(log)
    
        df = pd.DataFrame(data_list)
        df.to_csv('log.csv', header=False, index=False)
        print(df)
    
    
    export_excel()
    export_csv()
    
[/code]


CC BY-SA 4.0
2022-06-23T07:28:32.833
89547
2022-06-23T07:28:32.833
32891
89546
answer


`data_list`を加工せずに直接DataFrameに変換し、[`str.split`](https://pandas.pydata.org/docs/reference/api/pandas.Series.str.split.html)で列を分割する方法もあります。

**サンプルコード**

[code]

    import pandas as pd
    
    data_list = ['12:00:01 AM kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty\n', '12:10:01 AM   9913200   6352688     39.06    575700   5111548   5230536     21.22    860532   4858452        32\n', '12:20:01 AM   9912084   6353804     39.06    575736   5111588   5230272     21.21    860552   4858432        12\n', ]
    
    df = pd.DataFrame(data_list)
    df = df[0].str.split(expand=True)
    df.to_csv("sample.csv", header=False, index=False)
    
[/code]

**sample.csv**

[code]

    12:00:01,AM,kbmemfree,kbmemused,%memused,kbbuffers,kbcached,kbcommit,%commit,kbactive,kbinact,kbdirty
    12:10:01,AM,9913200,6352688,39.06,575700,5111548,5230536,21.22,860532,4858452,32
    12:20:01,AM,9912084,6353804,39.06,575736,5111588,5230272,21.21,860552,4858432,12
    
[/code]


CC BY-SA 4.0
2022-06-23T10:16:37.687
89552
2022-06-23T10:16:37.687
9820
89546
answer


既に解決しているようですが、文字列をcsvに書き出すだけならpandasを使うよりも標準の`csv`モジュールを使ったほうが圧倒的に簡単ですし処理も速いです。`str.split('')`でいわゆる「リストのリスト」にできたのなら、`writetows()`メソッドを使ってそれをそのままcsvファイルとして書き出すことができます。

[code]

    import csv
    
    data_list = [
        "12:00:01 AM kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty\n",
        "12:10:01 AM   9913200   6352688     39.06    575700   5111548   5230536     21.22    860532   4858452        32\n",
        "12:20:01 AM   9912084   6353804     39.06    575736   5111588   5230272     21.21    860552   4858432        12\n",
    ]
    
    with open("log.csv", mode="w", newline="") as fw:
        csv.writer(fw).writerows(map(lambda s: s.split(), data_list))
    
[/code]

参考：  
[csv --- CSV ファイルの読み書き — Python 3.10.4
ドキュメント](https://docs.python.org/ja/3/library/csv.html)  
[PythonでCSVファイルを読み込み・書き込み（入力・出力） | note.nkmk.me](https://note.nkmk.me/python-
csv-reader-writer/)


CC BY-SA 4.0
2022-06-27T01:33:55.800
89616
2022-06-27T01:33:55.800
37167
89546
answer