在 Python 中编辑 javascript 文件时出现问题

Problem editing javascript file in Python

我正在 Python 中编辑一个 javascript 文件,我已经完成了大多数地方,但我卡在了一个关键点,你能帮忙吗?

我要编辑的部分:

                    "589": {
                        p: "no-repeat",
                        c: 97,
                        q: "100% 100%",
                        bS: 420,
                        cP: "garson",
                        r: "none",
                        d: 138,
                        cQ: 1,
                        gg: "0",
                        cR: 1,
                        aP: "pointer",
                        h: "553",
                        i: "garson2",
                        bF: "578",
                        aI: 35,
                        j: "absolute",
                        x: "visible",
                        aA: {
                            a: [{
                                d: 1.1,
                                p: 1,
                                g: 1,
                                f: 1
                            }, {
                                p: 4,
                                h: "474"
                            }, {
                                p: 4,
                                h: "476"
                            }]
                        },
                        k: "div",
                        aJ: 35,
                        dB: "img",
                        z: 23,
                        Q: 16,
                        aK: 35,
                        R: "rgba(0, 0, 0, 0.411)",
                        S: 5,
                        a: 140,
                        aL: 35,
                        T: 4,
                        b: 2
                    }

javascript 文件中还有很多这样的块。 i: "garson2" 术语也不是固定的,但我可以得到这个值。使用术语 i: "garson2",我想在该术语所在的块中创建 r: "none" 变量 r: "inline"。我该怎么做?注意:r: "none"i: "garson2"之间的项也是可变的。

您可以为此使用积极的前瞻断言并使用 re.sub() 来替换。

r: "none"(?=[^{}]+i: "garson2")

Demo

例子

import re
text="""
"589": {
                        p: "no-repeat",
                        c: 97,
                        q: "100% 100%",
                        bS: 420,
                        cP: "garson",
                        r: "none",
                        d: 138,
                        cQ: 1,
                        gg: "0",
                        cR: 1,
                        aP: "pointer",
                        h: "553",
                        i: "garson2",
                        bF: "578",
                        aI: 35,
                        j: "absolute",
                        x: "visible",
                        aA: {
                            a: [{
                                d: 1.1,
                                p: 1,
                                g: 1,
                                f: 1
                            }, {
                                p: 4,
                                h: "474"
                            }, {
                                p: 4,
                                h: "476"
                            }]
                        },
                        k: "div",
                        aJ: 35,
                        dB: "img",
                        z: 23,
                        Q: 16,
                        aK: 35,
                        R: "rgba(0, 0, 0, 0.411)",
                        S: 5,
                        a: 140,
                        aL: 35,
                        T: 4,
                        b: 2
                    }
"""

print(re.sub(r'r: "none"(?=[^{}]+i: "garson2")','r: "inline"',text))

输出

"589": {
                        p: "no-repeat",
                        c: 97,
                        q: "100% 100%",
                        bS: 420,
                        cP: "garson",
                        r: "inline",
                        d: 138,
                        cQ: 1,
                        gg: "0",
                        cR: 1,
                        aP: "pointer",
                        h: "553",
                        i: "garson2",
                        bF: "578",
                        aI: 35,
                        j: "absolute",
                        x: "visible",
                        aA: {
                            a: [{
                                d: 1.1,
                                p: 1,
                                g: 1,
                                f: 1
                            }, {
                                p: 4,
                                h: "474"
                            }, {
                                p: 4,
                                h: "476"
                            }]
                        },
                        k: "div",
                        aJ: 35,
                        dB: "img",
                        z: 23,
                        Q: 16,
                        aK: 35,
                        R: "rgba(0, 0, 0, 0.411)",
                        S: 5,
                        a: 140,
                        aL: 35,
                        T: 4,
                        b: 2
                    }
    r = re.compile(r'r: "none"(?=[^{}]+i: "garson2")')
    with open('static/js/cafeproje_hype_generated_script.js') as f:
        contents = f.read()

    contents = r.sub(r'r: "none"(?=[^{}]+i: "garson2")','r: "inline"',contents)

    with open('static/js/cafeproje_hype_generated_script.js', 'w') as f:
        f.write(contents)

    return print ("Garson Ekleme İşlemi Tamam\n\nEklenen Garson İsmi:\t{}\nEklenen Garson Sırası:\t{}".format(garson_isim,garson_sira))

我按照你在代码中说的试过了。但是我得到了一个错误。很抱歉没有提前写这部分,我想我在不知不觉中延长了解决方案所需的时间。

我得到的错误是:

Traceback (most recent call last):
  File "/Volumes/GoogleDrive/Ortak Drive'lar/Arga Tek/Tunahan/Projeler/ProjeCafeDeneme/garsonekle.py", line 7, in <module>
    garsonislem.garson_ekle(garson_sira,garson_isim,res_adr) #garson eklemek için
  File "/Volumes/GoogleDrive/Ortak Drive'lar/Arga Tek/Tunahan/Projeler/ProjeCafeDeneme/garsonislem.py", line 17, in garson_ekle
    res_ekle(garson_sira,garson_isim,res_adr)
  File "/Volumes/GoogleDrive/Ortak Drive'lar/Arga Tek/Tunahan/Projeler/ProjeCafeDeneme/garsonislem.py", line 48, in res_ekle
    gorunur_yap(garson_sira,garson_isim)
  File "/Volumes/GoogleDrive/Ortak Drive'lar/Arga Tek/Tunahan/Projeler/ProjeCafeDeneme/garsonislem.py", line 81, in gorunur_yap
    contents = r.sub(r'r: "none"(?=[^{}]+i: "garson2")','r: "inline"',contents)
TypeError: 'str' object cannot be interpreted as an integer