Python 将文件直接读取到2D列表中

Python 将文件直接读取到2D列表中,python,list,logging,2d,Python,List,Logging,2d,这是我的.log文件的内容 当前日期和时间、传输、经过的时间、响应时间、传输 比率 7月18日星期三10:03:1,5,0.37秒,0.00秒,13.51吨/秒 7月18日星期三10:03:5,5,0.45秒,0.00秒,11.11秒 7月18日星期三10:04:0,5,0.91秒,0.00秒,5.49吨/秒 7月18日星期三10:22:4,12,0.79秒,0.00秒,15.19吨/秒 7月18日星期三10:23:0,12,0.56秒,0.00秒,21.43吨/秒 7月18日星期三10:23:

这是我的.log文件的内容

当前日期和时间、传输、经过的时间、响应时间、传输 比率

7月18日星期三10:03:1,5,0.37秒,0.00秒,13.51吨/秒

7月18日星期三10:03:5,5,0.45秒,0.00秒,11.11秒

7月18日星期三10:04:0,5,0.91秒,0.00秒,5.49吨/秒

7月18日星期三10:22:4,12,0.79秒,0.00秒,15.19吨/秒

7月18日星期三10:23:0,12,0.56秒,0.00秒,21.43吨/秒

7月18日星期三10:23:1,12,0.53秒,0.00秒,22.64吨/秒

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

更新:

回溯(最近一次呼叫最后一次): 文件“StressTestCompare.py”,第45行,在 打印数据[2][0]
索引器:列表索引超出范围

[['Current Date&Time'、'\tTrans'、'\tLapsed Time'、'\tResponse Time'、'\tTrans Rate'、'\tThroughput'、'\tConc'、'\tKay'、'\tFailed'、'\tData Transfer'、'\tTip Address'、'、''Wed Jul 18 10:03:1'、'\t5'、'\t0.37秒'、'\t0.00秒'、'\t13.51 t/s'、'\t0.00 b/s'、'、'\t0.00'、\t02.00'、\t02'、\t02.00'、\t02'、'、\t02.80'],“3.10.11 t/s”、“11.11 t/t11.11 t/s,”t/t11.11 t/s,“10.11 t/s,”t.11 t/t11.11 t/s,“0.0 0 b/s,”3.0 0 0 0.00 b/s,“\T00.0 0 0.00',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[3“3.10.10.10.11.11.11.11.11.11.11 t 11 t 11 t.11 t.11 t.11 t.11 t/11 t/t/t/t/t/t/t/t/t/t/t/t/11 t/t/t/t/t/t.11 t.11 t/s,,,,,,,,,,,,,,,,,,,,,,,,,,“,”\t10.2.2.57:8080'],[],“中国7月18日10.19 t/s’,“\t15.19 t/t15.19 t/s,”t/t15.19 t/s’,“中国7月18日10.19 t/s,”t/t15.19 t/s’,“中国7月18日10.10.19 t/s,”10.10:10.10:22:22:22:4 4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[中国中国7 7 7 7 7 7 7 7 7月18.10.10.10.10.10 10 10.10.10 10 10 10.10.10.10.10 10 10 10 10 10.19 t.19 t.19 t.19 t.19 t/10.19 t/10.19 t t/10.19 t t t t t/'\t10.2.2.56:8080'],[],['Wed Jul 18 10:23:1'、'\t12'、'\t0.53秒'、'\t0.00秒'、'\t22.64 t/s'、'\t0.00 b/s'、'\t0.00'、'\t0'、'\t0'、'\t0字节'、'\t10.2.2.57:8080']、[]

使用print repr(数据)的结果是这样的,有可能以一种更易于阅读的格式获得它吗?即使从我所能看到的情况来看,它看起来都在那里,所以我不知道为什么会出现超出范围的错误。

该模块在这方面很方便:

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
将为您提供变量
数据
,内容如下:

[['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', '']]
数据[2][1]
(不是
数据[3][2]
,因为基于零的索引)将为您提供

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

更新

添加了
data=[i for i in data if i]
,以处理OP最新帖子中可能导致问题的输入中的空行。

请查看:


[csv.reader(inf)中的行对行]
可以写成
列表(csv.reader(inf))
始终在Python 2.x中对csv文件集使用
'rb'
模式
skipinitialspace=True
忽略
之后的空白。谢谢,这就是我一直在寻找的。出于某种奇怪的原因,当我尝试打印任何大于2的行(例如打印数据[2][0]时,列表索引超出了范围给出错误,即使打印列表显示有7行。知道原因吗?@user:Try
print repr(data)
看看你真正拥有什么。+1哇..熊猫看起来非常有用,我必须检查一下!@Levon:它很快成为许多Python数据处理任务的首选工具。不久前,我将一组脚本转换为熊猫,令人惊讶的是没有什么令人头痛的事。此外,韦斯·麦金尼经常来这里,所以感觉像是一个新手se项目:^)@DSM..它看起来很有趣,我在看到这个后尝试安装它,但我的numpy版本太旧了???(4对6?),但我一定会检查它。我过去使用过R,这可能需要一些任务。我相信我的更新答案可以解决您的问题..让我知道。
>>> import pandas
>>> a = pandas.read_csv('input.csv')
>>> print a
  Current Date & Time   Trans  Elapsed Time  Response Time  Trans Rate  Unnamed: 5
0  Wed Jul 18 10:03:1       5      0.37 sec       0.00 sec   13.51 t/s         NaN
1  Wed Jul 18 10:03:5       5      0.45 sec       0.00 sec   11.11 t/s         NaN
2  Wed Jul 18 10:04:0       5      0.91 sec       0.00 sec    5.49 t/s         NaN
3  Wed Jul 18 10:22:4      12      0.79 sec       0.00 sec   15.19 t/s         NaN
4  Wed Jul 18 10:23:0      12      0.56 sec       0.00 sec   21.43 t/s         NaN
5  Wed Jul 18 10:23:1      12      0.53 sec       0.00 sec   22.64 t/s         NaN

>>> print a[' Trans'] * 2
0    10
1    10
2    10
3    24
4    24
5    24
Name:  Trans