【发布时间】:2015-12-10 00:37:39
【问题描述】:
我有一个文件包含以下数据:
输入:
Query= A1 bird
Hit= B1 owl
Score= 1.0 4.0 2.5
Hit= B2 bluejay
Score= 10.0 6.0 7.0
Query= A2 shark
Hit= C1 catshark
Score= 10.0 7.0 2.0
Query= A3 cat
Hit= D1 dog
Score= 7.0 2.0 1.0
我想编写一个程序来处理数据的结构,使其成为表格 (.csv) 格式...类似于以下内容:
输出:
Query = A1 bird, Hit= B1 owl, Score= 1.0 4.0 2.5 #The first query, hit, score
Query = A1 bird, Hit= B2 bluejay, Score= 10.0 6.0 7.0 #The second hit and score associated with the first query
Query = A2 shark, Hit= C1 catshark, Score= 10.0 7.0 2.0 #The second query, hit, socre
Query = A3 cat, Hit= D1 dog, Score= 7.0 2.0 1.0 #The third query, hit, score
我尝试通过Takis 执行以下建议的解决方案:
with open('g.txt', 'r') as f, open('result.csv', 'w') as csvfile:
fieldnames = ['Query', 'Hit', 'Score']
csvwriter = csv.DictWriter(csvfile, quoting=csv.QUOTE_ALL,
fieldnames=fieldnames)
csvwriter.writeheader()
data = {}
for line in f:
key, value = line.split('=')
data[key.strip()] = value.strip()
if len(data.keys()) == 3:
csvwriter.writerow(data)
data = {}
问题: 如何使程序识别与每个查询相关的命中和分数,以便我可以将它们打印在一行中?如果查询下有多个命中和分数(关联),则打印查询、第二个命中和第二个分数。和下面的输出一模一样:
"A1 bird","B1 owl","1.0 4.0 2.5" #1st Query, its 1st Hit, its 1st Score
"A1 bird","B2 bluejay", "10.0 6.0 7.0" #1st Query, its 2nd Hit, its 2nd Score
"A2 shark","C1 catshark", "10.0 7.0 2.0"#2nd Query, 1st and only Hit, 1st and only Score
"A3 cat","D1 dog","7.0 2.0 1.0"#3d Query, 1st and only Hit, 1st and only Score
有什么想法吗?
【问题讨论】:
标签: python csv formatting format tabular