python - 从文件直接读入二维列表python

标签 python list logging 2d

这是我的 .log 文件的内容

Current Date & Time, Trans, Elapsed Time, Response Time, Trans Rate,

Wed Jul 18 10:03:1, 5, 0.37 sec, 0.00 sec, 13.51 t/s,

Wed Jul 18 10:03:5, 5, 0.45 sec, 0.00 sec, 11.11 t/s,

Wed Jul 18 10:04:0, 5, 0.91 sec, 0.00 sec, 5.49 t/s,

Wed Jul 18 10:22:4, 12, 0.79 sec, 0.00 sec, 15.19 t/s,

Wed Jul 18 10:23:0, 12, 0.56 sec, 0.00 sec, 21.43 t/s,

Wed Jul 18 10:23:1, 12, 0.53 sec, 0.00 sec, 22.64 t/s,

我想将这些值直接放入 python 中的二维列表中,但我找到的每个解决方案都只是为每一行创建一个列表项。我希望列表槽的值是一个逗号分隔值。 EG 列表中的第 3 行第 2 列将存储 5。这可能很简单,但我一直在搜索和搜索,但发现没有任何方法可以这样做。非常感谢任何帮助。干杯。

更新:

追溯(最近的调用最后): 文件“StressTestCompare.py”,第 45 行,位于 打印数据[2][0]
IndexError: 列表索引超出范围

[['当前日期和时间', '\tTrans', '\tElapsed Time', '\tResponse Time', '\tTrans Rate', '\tThroughput', '\tConc', '\tOKAY', '\tFailed', '\tData Transfer', '\tIP Address', ''], ['Wed Jul 18 10:03:1', '\t5', '\t0.37 sec', '\t0. 00 秒', '\t13.51 t/s', '\t0.00 b/s', '\t0.00', '\t0', '\t0', '\t0 字节', '\t10 .2.2.55:8080'], [], ['Wed Jul 18 10:03:5', '\t5', '\t0.45 sec', '\t0.00 sec', '\t11.11 t/s', '\t0.00 b/s', '\t0.00', '\t0', '\t5', '\t0 字节', '\t10.2.2.56:8080'], [], ['Wed Jul 18 10:04:0', '\t5', '\t0.91 sec', '\t0.00 sec', '\t5.49 t/s', '\t1609. 89 b/s', '\t0.00', '\t5', '\t0', '\t1465 字节', '\t10.2.2.57:8080'], [], ['Wed Jul 18 10 :22:4', '\t12', '\t0.79 秒', '\t0.00 秒', '\t15.19 t/s', '\t0.00 b/s', '\t0 .00', '\t0', '\t0', '\t0 字节', '\t10.2.2.55:8080'], [], ['Wed Jul 18 10:23:0', '\t12 ', '\t0.56 秒', '\t0.00 秒', '\t21.43 t/s', '\t0.00 b/s', '\t0.00', '\t0', '\t12', '\t0 字节', '\t10.2.2.56:8080'], [], ['Wed Jul 18 10:23:1', '\t12', '\t0.53 sec' , '\t0.00 秒', '\t22.64 t/s', '\t0.00 b/s', '\t0.00', '\t0', '\t0', '\t0 字节', '\t10.2.2.57:8080'], []]

用 print repr(data) 出来是这样的,有没有办法弄成更易读的格式?即便如此,从我所看到的情况来看,它仍然存在,所以我不知道为什么我会收到超出范围的错误。

最佳答案

csv模块为此派上了用场:

import csv

with open('data.txt', 'rb') as inf:
     data = list(csv.reader(inf, skipinitialspace=True))
     data = [i for i in data if i] ## add to deal w/ blank lines in data file

会给你变量 data 内容:

[['Current Date & Time',
  'Trans',
  'Elapsed Time',
  'Response Time',
  'Trans Rate',
  ''],
 ['Wed Jul 18 10:03:1', '5', '0.37 sec', '0.00 sec', '13.51 t/s', ''],
 ['Wed Jul 18 10:03:5', '5', '0.45 sec', '0.00 sec', '11.11 t/s', ''],
 ['Wed Jul 18 10:04:0', '5', '0.91 sec', '0.00 sec', '5.49 t/s', ''],
 ['Wed Jul 18 10:22:4', '12', '0.79 sec', '0.00 sec', '15.19 t/s', ''],
 ['Wed Jul 18 10:23:0', '12', '0.56 sec', '0.00 sec', '21.43 t/s', ''],
 ['Wed Jul 18 10:23:1', '12', '0.53 sec', '0.00 sec', '22.64 t/s', '']]

data[2][1](不是data[3][2],因为基于零索引)会给出你

'5'

一个字符串,您可以使用 int(data[2][1])将其转换为整数 5

更新:

添加了 data = [i for i in data if i] 以处理可能导致 OP 更新后的问题的输入空白行。

关于python - 从文件直接读入二维列表python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11539938/

相关文章:

python - 当我从空闲状态导入 `http.server` 时它可以工作,但是当我运行具有 `import http.server` 的 python 文件时出现错误

python - 如何使用正则表达式从这样的字符串中提取两个值?

python - 如何在单个 apache 服务上设置多个 django 版本?

python - 快速 python 前端列表扩展

Mongodb vs Cassandra 用于聚合、搜索和分析许多日志

c++ - 使用 log4cxx 关闭日志记录以最小化开销

python - 通过迭代确保随机生成的对不相同

java - 在android中添加两个MutableList

ios - 我的 iOS 应用程序在启动时崩溃

python - 处理超过 1000000 个元素的列表