У меня есть лист Excel, содержащий следующее:
key topic a b c d e
plants flower red blue green pink purple
space moon grey blue white
bugs ants red black
Упрощенно, я хочу «распечатать» каждую строку для отдельных файлов, например:
file1.txt:
a) It is red.
b) It is blue.
c) It is green.
d) It is pink.
e) It is purple.
file2.txt:
a) It is grey.
b) It is blue.
c) It is white.
file3.txt:
a) It is red.
b) It is black.
Но, как вы можете видеть, каждая строка содержит различное количество столбцов.То есть есть пустые ячейки, которые я не хочу распечатывать.
Мне не нужен такой файл:
a) It is red.
b) It is black.
c)
d)
e)
Пока это мой код:
for row in df.itertuples():
ques = open("file1.txt","w+")
ques.write('It is '+row.a+'.')
ques.write('It is '+row.b+'.')
ques.write('It is '+row.c+'.')
ques.write('It is '+row.d+'.')
ques.write('It is '+row.e+'.')
Затем выдается ошибка TypeError: can only concatenate str (not "float") to str
.Я почти уверен, что в столбцах d, e и c, d, e для второго и третьего вопросов ничего нет.
(И да, я знаю, что этот код будет неоднократно печататься в одном и том же file1.txtно я упростил код, чтобы сосредоточиться на моей основной проблеме - строки не имеют одинаковое количество столбцов.)
Итак, я попытался:
for index in df.itertuples():
ques.write(row.index)
Я получил этоошибка: TypeError: can only concatenate str (not "builtin_function_or_method") to str
.
Я также пытался:
if row.c is not None:
ques.write('It is '+row.c+'.')
if row.d is not 0:
ques.write('It is '+row.d+'.')
# etc
Это также выдает ошибку.
Я знаю, что каким-то образом я должен использовать цикл, но после поиска вокруг я немного растерялся.Моя главная проблема заключается в том, что я не хочу, чтобы пустые ячейки были распечатаны.
Любая помощь будет оценена.
РЕДАКТИРОВАТЬ:
Я пытался ques.write(','.join(i for i in row[1:] if i is not np.NaN))
ихотя это работает, чтобы не выдавать ошибку, теперь он выводит все в строку.«Растения, цветок, красный, синий, зеленый, розовый, фиолетовый».