将注释放在多行语句之间(带有行继续)

ira*_*ira 2 python comments pyspark

当我编写以下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']))
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

.withColumn('sub_col2', from_unixtime(col('explosion')['sub_col2']))
^
IndentationError: unexpected indent
Run Code Online (Sandbox Code Playgroud)

有没有办法在pyspark的多行命令行之间写注释?

pau*_*ult 5

这不是pyspark问题,而是违反python语法的问题。

考虑以下示例:

a, b, c = range(3)
a +\
# add b
b +\
# add c
c
Run Code Online (Sandbox Code Playgroud)

结果是:

    a +# add b
              ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

\是继续符和Python解释下一行的东西后立即发生,造成您的错误。

解决此问题的一种方法是改用括号:

(a +
# add b
b +
# add c
c)
Run Code Online (Sandbox Code Playgroud)

分配给变量时,它看起来像

# do a sum of 3 numbers
addition = (a +
            # add b
            b +
            # add c
            c)
Run Code Online (Sandbox Code Playgroud)

或您的情况:

# 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'])))
Run Code Online (Sandbox Code Playgroud)