这是我的 .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/