1

次のような内容のファイルがあるとします。

{
    "title": "Pilot",
    "image": [
        {
            "resource": "http://images2.nokk.nocookie.net/__cb20110227141960/notr/images/8/8b/pilot.jpg",
            "description": "not yet implemented"
        }
    ],
    "content": "<p>The pilot ...</p>"
},
{
    "title": "Special Christmas (Part 1)",
    "image": [
        {
            "resource": "http://images1.nat.nocookie.net/__cb20090519172121/obli/images/e/ed/SpecialChristmas.jpg",
            "description": "not yet implemented"
        }
    ],
    "content": "<p>Last comment...</p>"
}

次のように、リソースのすべての値を置き換えるスクリプトがあります。

"resource": "http://images1.nat.nocookie.net/__cb20090519172121/obli/images/e/ed/SpecialChristmas.jpg"

このような別の場合:"../img/SpecialChristmas.jpg"

from StringIO import StringIO    
import re
import urllib

infile = open('test2.txt')
outfile = open('test3.txt', 'w')

pattern = r'"resource": ".+/(.+).jpg"'
replacement = '"resource": "../img/\g<1>.jpg"'
prog = re.compile(".+/(.+).jpg")

for line in infile:
    if prog.match(line):
        print (line) #this prints nothing
    text = re.sub(pattern, replacement, line)
    outfile.write(text)
infile.close()
outfile.close

しかし、次のように、ループ内のすべてのリソースの値も出力したいと思います。

"http://images1.nat.nocookie.net/__cb20090519172121/obli/images/e/ed/SpecialChristmas.jpg"
"http://images1.nat.nocookie.net/__cb20090519172121/obli/images/e/ed/SpecialChristmas.jpg"

私がやっていることはうまくいかないので、コンソールだけですべてのリソース値を出力する正しい方法は何でしょうか?

前もって感謝します!

4

3 に答える 3

0

私はこれをやってしまった:

from StringIO import StringIO    
import re
import urllib

infile = open('test2.txt')
outfile = open('test4.txt', 'w')

pattern = r'"resource": ".+/(.+).jpg"'
replacement = '"resource": "../img/\g<1>.jpg"'
prog = re.compile(pattern)

for line in infile:
    if prog.search(line):
        url = line.split('"resource":')[1][2:][:-3]
        print(url)
    text = re.sub(pattern, replacement, line)
    outfile.write(text)
infile.close()
outfile.close

それは動作しますが、まったくpythonicに見えないと思います

于 2013-10-14T23:46:26.733 に答える