【发布时间】:2021-05-11 01:06:19
【问题描述】:
我有两个列表看起来像:
sentences = [['its', 'a', 'great', 'show'], ['nice', 'movie'], ['good', 'series']]
labels = [['O', 'O', 'O', 'B_A'], ['O', 'B_A'], ['O', 'B_A']]
我想将这对列表 按列 保存在 txt 文件中,因此每个元素对应该用空格分隔,每个列表对应该用一个空行。
想要的输出应该是这样的:
its O
a O
great O
show B_A
nice O
movie B_A
good O
series B_A
我试过这个:
filename = 'data.txt'
with open(filename, 'w') as f:
for sen in sentences:
for lab in labels:
line = sen + ' ' + lab
f.write(line)
我有以下错误:
TypeError: can only concatenate list (not "str") to list
更新:使用第一个答案,我试图定义一个函数,该函数采用两个嵌套列表和新文件名,如下所示:
def create_txt(ls1, ls2,file_name):
with open(file_name, 'w') as f:
for sen, lab in zip(ls1,ls2):
for i, j in zip(sen, lab):
f.write(f'{i} {j}')
f.write('\n')
return file_name
但是它将提供的文件名作为字符串返回:
create_txt(sentences, labels,'data_n.txt')
Output: 'data_n.txt'
我在这里做的逻辑问题是什么?
提前致谢!
【问题讨论】:
-
这能回答你的问题吗? Python iterate over two lists simultaneously
-
错误是不言自明的。您正在将列表连接到字符串。您需要使用
zip一起迭代两个主列表,然后再次使用zip一起迭代子列表,打印对并在子列表迭代结束时打印换行符。写入文件无关紧要;如果可以打印,则可以将其替换为f.write(string) -
@ggorlen 我正在尝试,谢谢!
标签: python nested-lists txt