我使用以下方法从CSV数据文件中解析并提取了行和字段名称。
with open("log.txt","w") as f, Tracker(f):
response=self.admin_client.post(url, post)
self.assertEqual(200, response.status_code, trace)
如何使用fieldname访问任何行中的已解析数据?例如,字段名可以是reader = csv.DictReader(open('Sourcefile.txt','rt'), delimiter = '\t')
fn = reader.fieldnames
,AA
,BB
,CC
。如何获取第5行中的DD
或第3行中的DD
的值?
答案 0 :(得分:2)
只要文件不是太大,只需将阅读器转换为列表:
data = list(reader)
现在访问第1行中的AA
列:
data[0]['AA']
或第3行中字段名称3的列:
data[2][fn[2]]
答案 1 :(得分:0)
一种简单的方法是将文件中的所有数据存储到容器中。另一个答案的替代方法是使用pandas数据帧:
>>import pandas as pd
>>from io import StringIO # just to make a fake in memory file
>>s = StringIO('AA\tBB\tCC\tDD\n1\t2\t3\t4\n11\t12\t13\t14\n') # fake data
>>data = pd.read_table(s)
>>data.loc[0,'AA'] # access row 0 (the first row) and column AA
1
编辑:这确实使用了标准库中未包含的不同包,但是当我经常阅读和操作csv文件时,我经常发现使用pandas比使用csv更容易。