Поместите комментарии между многострочным оператором (с продолжением строки)

1

Когда я пишу следующую команду pyspark:

# comment 1
df = df.withColumn('explosion', explode(col('col1'))).filter(col('explosion')['sub_col1'] == 'some_string') \
    # comment 2
    .withColumn('sub_col2', from_unixtime(col('explosion')['sub_col2'])) \
    # comment 3
    .withColumn('sub_col3', from_unixtime(col('explosion')['sub_col3']))

Я получаю следующую ошибку:

.withColumn('sub_col2', from_unixtime(col('explosion')['sub_col2']))
^
IndentationError: unexpected indent

Есть ли способ писать комментарии между строками многострочных команд в pyspark?

Теги:
comments
pyspark

1 ответ

2
Лучший ответ

Это не проблема pyspark, а скорее нарушение синтаксиса python.

Рассмотрим следующий пример:

a, b, c = range(3)
a +\
# add b
b +\
# add c
c

Это приводит к:

    a +# add b
              ^
SyntaxError: invalid syntax

Параметр \ является символом продолжения, а python интерпретирует что-либо на следующей строке, как происходит сразу после этого, вызывая вашу ошибку.

Один из способов: вместо этого использовать круглые скобки:

(a +
# add b
b +
# add c
c)

При назначении переменной это выглядело бы так:

# do a sum of 3 numbers
addition = (a +
            # add b
            b +
            # add c
            c)

Или в вашем случае:

# comment 1
df = (df.withColumn('explosion', explode(col('col1')))
    .filter(col('explosion')['sub_col1'] == 'some_string')
    # comment 2
    .withColumn('sub_col2', from_unixtime(col('explosion')['sub_col2']))
    # comment 3
    .withColumn('sub_col3', from_unixtime(col('explosion')['sub_col3'])))
  • 0
    Спасибо, по какой-то причине я получаю: SyntaxError: invalid syntax
  • 1
    Дело в том, что вы не можете сделать назначение в скобках
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню