【问题标题】:jupyter notebook to python script w/o format changingjupyter notebook 到 python 脚本,不改变格式
【发布时间】:2018-04-30 18:05:30
【问题描述】:

现在我在 jupyter notebook 的 UI 中使用 file-> download as->python(*.py) 将 jupyter notebook 转换为 python 脚本。但是,它会将所有 \ 转换为长空格(可能是制表符),例如 在 Jupyter 笔记本中:

test_users_df = item_info_df.where(item_info_df.split=='test')\
                        .select(['user_id'])\
                        .distinct()\
                        .orderBy(['user_id'])

转换后的python脚本会变成:

test_users_df = item_info_df.where(item_info_df.split=='test')                            
.select(['user_id'])                            .distinct()                            
.orderBy(['user_id'])

有没有办法保持原来的格式?

【问题讨论】:

    标签: python jupyter-notebook


    【解决方案1】:

    我认为没有办法解决这个问题(我已经找到了),但我要解决这个问题是使用括号 () 来代替反斜杠。

    我认为关于 \ 或 () 是否最适合行延续的争论是公开的,请参阅https://stackoverflow.com/a/53180/7019148 的 cmets 进行讨论。

    我会将您的代码更改为:

    test_users_df = (item_info_df.where(item_info_df.split=='test') 
                             .select(['user_id']) 
                             .distinct() 
                             .orderBy(['user_id']))
    

    从 .ipynb 到 .py 的转换应该可以按预期进行!

    【讨论】:

    • 我认为这通常不起作用。当你有类似 ``` a,b,c,d = \ long_named_function() ``` 的时候你会怎么做
    • 在 Python 中根本没有办法做到这一点(请参阅 stackoverflow.com/a/40955425/7019148),但通常 Jupyter 笔记本不适合脚本开发恕我直言,所以如果您想要的输出是 .py 文件,请使用一个 IDE。
    • @cgnorthcutt 使用 ⏎ 作为换行符:a,b,c,d = (⏎ long_named_function()) 有效且含义相同。我总是以这种风格打破长线,从不使用反斜杠。 PEP 8 建议这样做。见this question。令人讨厌的是,Jupyter 不支持反斜杠,因为它们是有效的 Python,但它们几乎从不需要。
    猜你喜欢
    • 2021-05-03
    • 1970-01-01
    • 1970-01-01
    • 2021-07-29
    • 1970-01-01
    • 2023-03-11
    • 2022-10-17
    • 2022-08-22
    • 2021-09-29
    相关资源
    最近更新 更多