【发布时间】:2021-09-02 18:11:50
【问题描述】:
我有以下列表,其结构为[(int, [], []), (int, [], []), (int, [], []), ..., (int, [], [])]。 [] 代表句子的记号。
data = [(11.221, ['Maruyama', '(', 'Japan', ')'], ['S-PER', 'O', 'S-LOC', 'O']),
(5.56, ['MANAMA', '1996-08-22'], ['S-LOC', 'O']),
(5.381, ['BEIJING', '1996-08-22'], ['S-LOC', 'O'])]
我想将data 写入 CSV 文件,如下所示:
11.221, Maruyama (Japan) , Maruyama , S-PER
(, , O
Japan, , S-LOC
), , O
[HERE SHOULD BE SPACE]
5.56 , MANAMA 1996-08-22 , MANAMA , S-LOC
, 1996-08-22, O
[HERE SHOULD BE SPACE]
5.381 , BEIJING 1996-08-22, BEIJING , S-LOC
, 1996-08-22, O
CSV 文件格式为:
int, sentence (concatenated tokens), token_1, tag_1
, token_2, tag_2
, ...
我已经尝试了以下方法,但没有正常工作。
import csv
with open('output.csv','w') as f:
for x in [tuple(zip(x[0], x[1], x[2])) for x in data]:
for r in x:
f.write(' '.join(r) + '\n')
f.write('\n')
Traceback:TypeError: 'float' object is not iterable
我还打算这样做:
data = [(value, ' '.join(sent), sent, tag) for value, sent, tag in data]
从那时开始,我尝试了以下方法。
with open('output.csv', 'w') as f:
writer = csv.writer(f , lineterminator='\n')
for value, sent, tokens, tags in data:
writer.writerow(value)
writer.writerow(sent)
for x in [tuple(zip(tokens, tags))]:
for r in x:
writer.writerow(' '.join(r) + '\n')
writer.writerow('\n')
回溯:错误:预期可迭代,而不是浮动
【问题讨论】:
-
必须是CSV格式吗?为什么不使用 JSON 之类的东西,这样可以更轻松地将其加载回程序中?
-
@Kraigolas,不一定是 CSV 格式。 JSON 格式也很容易加载回程序。