正在查找可能有问题的字符串浓缩代码,由\n

2024-04-27 18:08:18 发布

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

在Python中,字符串可以替换为换行符,因此我经常遇到一些我想不起来的bug。例如:

numbers = (
    'zero',
    'one',
    'two'
    'three',
    'four',
    'five',
)

为了避免这个难题,我想在将源代码提交到存储库之前,先检查我要使用Git Hook提交的源代码是否有问题。但是,因为您可能真的想要组合字符串,所以我想强制源代码在每个字符串的末尾都有一个逗号,或者在每个字符串的末尾都没有逗号。例如:

# ok
numbers = (
    'zero'
    'one'
    'two'
    'three'
    'four'
    'five'
)
# ok
numbers = (
    'zero',
    'one',
    'two',
    'three',
    'four',
    'five',
)

# error
numbers = (
    'zero',
    'one',
    'two',
    'three',
    'four',
    'five'
)

所以我检查了AST模块,看看AST模块是否能检测到它。因此:

>>> import ast
>>> ast.dump(ast.parse("('1'\n'2')"))
"Module(body=[Expr(value=Str(s='12'))])"

有什么好办法吗?你知道吗


Tags: 模块字符串源代码okastonethreefour
1条回答
网友
1楼 · 发布于 2024-04-27 18:08:18

您正在使用元组,也许使用不同的结构(例如,方括号(列表)或有序集)将提供您想要的内容。如果我正确地记住了tupling/untupling规则,那么您看到的是将6个元素的tuple解包成1个元素变量的效果—python必须处理额外的5个值,concation被选为标准行为

相关问题 更多 >