簡體   English   中英

Python3.7 無法正確解析文本文件

[英]Python3.7 not parsing text file properly

我正在嘗試編寫一個(應該是……)基本的 Python 腳本來完成以下任務:

  1. 從硬編碼路徑讀入日志文件(下面的示例文件)
  2. 為文件的每一行創建一個數組,包含兩個或三個元素
  3. 打印出那個數組。

以下是來自 scimark 基准測試的示例日志文件:

**                                                              **
** SciMark2 Numeric Benchmark, see http://math.nist.gov/scimark **
** for details. (Results can be submitted to pozo@nist.gov)     **
**                                                              **
Using       2.00 seconds min time per kenel.
Composite Score:          55.11
FFT             Mflops:   35.99    (N=1024)
SOR             Mflops:   60.25    (100 x 100)
MonteCarlo:     Mflops:    3.21
Sparse matmult  Mflops:   16.10    (N=1000, nz=5000)
LU              Mflops:   15.02    (M=100, N=100)

理想情況下,我會像這樣創建一個數組:

array = [
['Composite Score', 55.11 ''],
['FFT MFlops', 35.99, '(N=1024)'],
['SOR MFlops', 60.25, '(100 x 100)'],
['MonteCarlo Mflops', 3.21, ''],
['Sparse matmult Mflops', 16.10, '(n=1000, NZ=5000)'],
['LU', 3.21, '(M=100, N=100)']]

我嘗試使用以下 python 代碼執行此操作:

import csv

with open ('/SciMarkResults.txt') as file:
    lines = file.readlines()

print(len(lines))
new_lines = lines[5:]

def get_data(readfile):
    types = (line.split('\n') for line in readfile)
    return types

a = get_data(new_lines)

print(a)

它提供以下輸出:

11
<generator object get_data.<locals>.<genexpr> at 0x7ff45b5c5ba0>

我考慮過使用正則表達式,但這似乎不是首選的解決方案。

我無法確定為什么我無法正確拆分陣列。 簡單地打印new_lines產量:

['Composite Score:          460.11\n', 'FFT             Mflops:   315.99    (N=1024)\n', 'SOR             Mflops:   860.25    (100 x 100)\n', 'MonteCarlo:     Mflops:    93.21\n', 'Sparse matmult  Mflops:   416.10    (N=1000, nz=5000)\n', 'LU              Mflops:   615.02    (M=100, N=100)\n']

任何意見,將不勝感激。

而不是使用,

types = (line.split('\n') for line in readfile)

這是一個生成器理解,你可以使用

types = [line.split('\n') for line in readfile]

這是一個列表理解,應該給你你需要的輸出。

@jdehesa在上面回答了同樣的問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM