kim1211 发表于 2012-06-01 20:39

书上的例子是把
def lines(file):
    for line in file:
      yield line
      yield '\n'
   
def blocks(file):
    block=[]
    for line in lines(file):
      if line.strip():
            block.append(line)
      elif block:
            yield ''.join(block).strip()
            block=[]
放到util.py里
import sys, re
from util import *

print ''

title=True
for block in blocks(sys.stdin):
    block=re.sub(r'\*(.+?)\*',r'<em>\1</em>',block)
    if title:
      print '<h1>'
      print block
      print '</h1>'
      title=False
    else:
      print '<p>'
      print block
      print '</p>'
      print '</body></html>'
这部分是另外一个脚本 simple_markup.py
然后建一个TXT文件放几段文字
运行的命令是simple_markup.py <test_txt> test_output.html
但是运行报错

anonymous0502 发表于 2012-06-02 12:51

如果脚本能够在屏幕上打印出结果就可以了,重定向到一个文件里不就行了,都不用改。test.py > test.html

gaomeng1447 发表于 2014-08-06 07:59

我也遇到同样的问题,希望有解决了问题的分享一下...

icymirror 发表于 2014-08-06 11:19

回复 13# gaomeng1447
下面代码应当基本可用,问题是不清楚最开始的re.sub是要做什么代换,原来代码的re.sub就去掉了。import sys, re
from util import *

def ReadFromFile(file):
    title=True
    result = ['<html><head><title>...</title></head><body>']
    with open(file, 'r') as fh:
      for block in blocks(fh):
            if title:
                block = '<h1>' + block + '</h1>'
                result.append(block)
                title=False
            else:
                result.append('<p>')
                result.append(block)
                result.append('</p>')
    result.append('</body></html>')
    return result

def WriteToFile(file, content):
    with open(file, 'w') as fh:
      fh.write("\n".join(content))

def main():
    WriteToFile(sys.argv, ReadFromFile(sys.argv))

if __name__ == '__main__':
    main()
页: 1 [2]
查看完整版本: 求助