我有一个要在CSV文件中输出的数据样本。数据结构是由不同的德语术语(字典)和相应的可能的英语翻译(list
)组成的嵌套列表:
all_terms = [{'Motor': ['engine', 'motor']},
{'Ziel': ['purpose', 'goal', 'aim', 'destination']}]
如您所见,一个德语术语可以容纳数量不定的英语翻译。我想将每个德语术语及其相应的翻译输出到一行中的不同列中,因此"Motor"
在第1列中,"engine"
在第2列中,"motor"
在第3列中。 / p>
我只是不知道如何正确遍历数据。 到目前为止,我要输出的代码:
with open(filename, 'a') as csv_file:
writer = csv.writer(csv_file)
# The for loop
for x in all_terms:
for i in x:
for num in i:
writer.writerow([i, x[i][num]])
但是会抛出该错误:
writer.writerow([i, x[i][num]]) TypeError: list indices must be integers, not unicode
任何提示都值得赞赏,也许还有比3嵌套的循环更聪明的方法。
答案 0 :(得分:1)
以下解决方案如何?
import csv
all_terms = [{'Motor': ['engine', 'motor']},
{'Ziel': ['purpose', 'goal', 'aim', 'destination']}]
with open('test.csv', 'a') as csv_file:
writer = csv.writer(csv_file)
# The for loop
for small_dict in all_terms:
for key in small_dict:
output = [key, *small_dict[key]]
writer.writerow(output)
test.txt
中的输出:
Motor,engine,motor
Ziel,purpose,goal,aim,destination
我使用*
运算符将字典值中的所有项目解包,以创建要写入writerow
的行。如果您在字典中有多个条目,则可以解决这种情况all_terms
内。
答案 1 :(得分:1)
这是一种方法:
import csv
all_terms = [{'Motor': ['engine', 'motor']},
{'Ziel': ['purpose', 'goal', 'aim', 'destination']}]
filename = 'tranlations.csv'
with open(filename, 'a', newline='') as csv_file:
writer = csv.writer(csv_file)
for term in all_terms:
word, translations = term.popitem()
row = [word] + translations
writer.writerow(row)
此后CSV文件的内容:
Motor,engine,motor
Ziel,purpose,goal,aim,destination