"Python文件 - 从驼峰式命名转换为下划线命名惯例 - 有没有更快的方法?"

2024-03-28 11:17:27 发布

您现在位置:Python中文网/ 问答频道 /正文

几周前,在我学习python的第4周,我编写了我的第一个真实程序。现在大约一个月后,有了更多的经验,我正在尝试重构代码。我想做的第一件事是改变我的命名约定,以遵循PEP8准则。你知道吗

最初,我使用一个Jupyter笔记本以交互方式准备程序。由于我有Java编程背景,使用notebook界面是一个非常积极和令人愉快的惊喜,因为我可以以交互方式检查值和代码。完成后,我将整个代码复制并粘贴到python文件中,并使用Mu代码编辑器将其作为一个整体运行。你知道吗

现在,我正试图通过对camelCase到下划线约定中的所有项进行简单的重命名来进行重构,Jupyter和Mu代码编辑器都不支持重构。因此,在做了一点google之后,我安装了PyCharm并开始尝试它。重构重命名的能力非常好,但是,我发现它有许多细微差别,我不完全理解-有没有使用重命名的技巧,以便我可以转换所有的变量,使用camelCase的函数使用下划线约定快速-例如,所有的变量名要一次更改,而不是一个接一个?你知道吗

下面是我试图重构的代码-https://github.com/ssamsudeen/learning-python/blob/master/quranSRS.py

注意:在发布这篇文章之后,我做了一些实验来了解如何在Jupyter works中查找和替换-查找和替换对话框有3个切换按钮,用于区分大小写、正则表达式和仅在选定单元格中替换的功能。我发现它提供的输出是有意义的-所以,这就是我现在正在做的,直到我找到更好的方法来做这件事。任何关于如何更好地查找和替换的建议也将受到欢迎(理想情况下,我希望替换排除我的评论或某些单元格,但无法确定如何执行)

enter image description here


Tags: 代码程序编程笔记本jupyter经验java编辑器
1条回答
网友
1楼 · 发布于 2024-03-28 11:17:27

不幸的是,这必须通过脚本来完成,因为正则表达式字符串替换本身不能改变字母大小写。下面是一个Python脚本:

import sys
import re

with open(sys.argv[1]) as prgm:
    text = prgm.read()
def subfunc(m):
    result = ''
    result += m.group(1)
    # first word
    result += '_'
    result += m.group(2).lower()
    # second word, if present
    if m.group(3):
        result += '_'
        result += m.group(3).lower()
    result += m.group(4)
    return result
text = re.sub(r"(\W?[a-z]+)([A-Z][a-z]+)([A-Z][a-z]+)?(\W|$)", subfunc, text)
with open(sys.argv[1], 'w') as prgm:
    prgm.write(text)

另存为change_caps.py,运行python change_caps.py quranSRS.py

相关问题 更多 >