我有一个看起来像这样的文本文件:
162.8008 EXP Set primary_image image=stimulus/Faces/face046.jpg
162.8008 EXP Set secondary_image image=stimulus/Scenes/scene57.jpg
162.8008 EXP Set primary_image opacity=1.0
162.8008 EXP Set secondary_image opacity=0.0
162.8008 EXP Set stimulus_instr text=press for repeated faces
我已经这样读过了:
log_data = []
with open('../filename.log.txt', 'rb') as f:
reader = csv.reader(f, delimiter = '\t')
for row in reader:
log_data.append(row)
当我说:
时,我想立即访问第三列print log_data[2][:]
我已经返回了所有单行,例如:
['8.8093', 'EXP', 'Started presenting text_2']
当我切换时,改为:
print log_data[:][2]
我得到了同样的结果!我一直在尝试将它转换为一个numpy数组并使用.split()函数而没有运气。非常感谢任何专业知识 - 非常感谢!
答案 0 :(得分:1)
怎么样
print [row[2] for row in log_data]
答案 1 :(得分:0)
如果您使用numpy
,则以下内容应该没问题
#!/usr/bin/env python
import numpy as np
dat = np.genfromtxt('data.txt', delimiter='\t', dtype=str)
print dat[:,2]
结果:['Set' 'Set' 'Set' 'Set' 'Set']
这篇文章How to use numpy.genfromtxt when first column is string and the remaining columns are numbers?可能会有所帮助。
答案 2 :(得分:0)
这相当于写作
n = len(log_data[2] - 1
print log_data[2][0:n]
也就是说,您要告诉它打印第2行中的每个元素。如果您只想访问第3行,那么您需要使用
print log_data[2][3]
如果要循环数据
for row in log_data:
# process row
for col in row:
# process each column
你提到的相反情况,log_data [:] [2],正在打印切片的第2行,相当于
n = len(log_data) - 1
print log_data[0:n][2]
答案 3 :(得分:0)
不需要Numpy,对于给定的数据集,我不明白为什么你会选择使用它。
def get_column(n, data):
return [row[n] for row in data]
print(get_column(2, log_data)) # => ["Set", "Set", "Set", ...]