插入换行符以格式化Python脚本

时间:2017-11-27 18:32:54

标签: python regex

所以这有点不同,但请耐心等待。我有一些python函数字符串,没有新的行字符,但适当的缩进。例如(完全组成):

def calc_value(a, b, c):    if a>b+c:        return a    else:        return b

我想在每组4+空格之前插入换行符,这样当我在界面中显示代码时,它会显示为可能会读取一个python脚本(而不是一条没有任何意义的长行)。 ..)。我可以用

str.replace('    ', '\n    ')

但是这只会替换第一个缩进,如果迭代字符串,带有双缩进的情况会被分成两行。

是否有人有任何创意正则表达式或其他格式化选项?

3 个答案:

答案 0 :(得分:1)

以这种方式:

var checkMatch = function(){
    if ($clicked.length > 1){
        if ($card1 === $card2){
            $dis.toggleClass('match');
            $matched.push($clicked);
            console.log('MATCH');
            $clicked = [];
            console.log($matched);
            console.log($clicked);
        }else {
            $clicked = [];
            $('.card').removeClass('open show');
            console.log('NOT A MATCH!')
        };
    }else{

    };
};

答案 1 :(得分:1)

代码

将原始评论转换为答案......

See regex in use here

((?:\t| {4})+)

或者(并且更快),您可以使用(\t+| {4,}),但此时它与answer提供的Robᵩ几乎相同,但添加了制表符。

替换:\n\1

用法

以下代码由regex101在上面的链接中自动生成。直接链接here

# coding=utf8
# the above tag defines encoding for this document and is for Python 2.x compatibility

import re

regex = r"((?:\t| {4})+)"

test_str = "def calc_value(a, b, c):    if a>b+c:        return a    else: return    b"

subst = "\\n\\1"

# You can manually specify the number of replacements by changing the 4th argument
result = re.sub(regex, subst, test_str, 0)

if result:
    print (result)

# Note: for Python 2.7 compatibility, use ur"" to prefix the regex and u"" to prefix the test string and substitution.

说明

  • ((?:\t| {4})+)将以下内容捕获到捕获组1中
    • (?:\t| {4})+匹配以下任意一次或多次
      • \t匹配制表符
      • {4}正好匹配空格字符4次

答案 2 :(得分:0)

没有重新

print("def calc_value(a, b, c):    if a>b+c:        return a    else:        return b".replace(" "*8,"\n\t\t").replace(" "*4,"\n\t")
  

输出:

def calc_value(a, b, c):
    if a>b+c:
        return a
    else:
        return b