1

我用 Python 插件和 autopep8 设置了 VS Code。我的相关设置是:

{
    "editor.defaultFormatter": "ms-python.python",   
    "editor.formatOnSave: true,
    "python.formatting.autopep8Args":[
        "--agressive"
    ]
}

我喜欢它在自动格式化方面完成的大部分工作(切割行长,在这里或那里替换奇怪的东西),但有一个功能真的让我很烦恼。

我正在使用 pySpark 并将regexp_replace功能设置为

df = df.withColumn('NewCol', regexp_replace(col('OldCol'), '\W', ' ')

当我保存文件时,自动格式化程序每次都会替换'\W''\\W'. 我可以明白它为什么这样做(通常,字符串中的单个反斜杠是错误的未转义字符),但在这种情况下,我需要它停止。有什么我可以通过的论点忽略这种情况吗?我不介意它再也不会逃避反斜杠。但我宁愿不关闭--agressive它实现的所有其他事情的校正。

4

1 回答 1

0

关闭此设置是个坏主意

无效的转义序列从 Python 3.6 开始被贬低,最终会导致SyntaxError. 即使您目前不打算升级您正在使用的 Python 版本,使用无效的转义序列也会限制代码的可移植性。

相反,使用原始字符串:

df = df.withColumn('NewCol', regexp_replace(col('OldCol'), r'\W', ' ')

但是,如果您真的想禁用此设置,您可以使用--ignore带有 的标志,如此W605所述。

{
    "editor.defaultFormatter": "ms-python.python",   
    "editor.formatOnSave": true,
    "python.formatting.autopep8Args":[
        "--aggressive",
        "--ignore W605"
    ]
}

如上一个链接所述,问题代码W605对应于“Fix invalid escape sequence 'x'”。

于 2022-02-02T18:40:59.410 回答