代码之家  ›  专栏  ›  技术社区  ›  ira

将注释放在多行语句之间(带换行符)

  •  2
  • ira  · 技术社区  · 6 年前

    当我编写以下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的多行命令行之间是否有写注释的方法?

    1 回复  |  直到 6 年前
        1
  •  8
  •   ira    6 年前

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

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

    这将导致:

        a +# add b
                  ^
    SyntaxError: invalid syntax
    

    这个 \

    解决此问题的一种方法是使用括号代替:

    (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'])))