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
但是运行报错
如果脚本能够在屏幕上打印出结果就可以了,重定向到一个文件里不就行了,都不用改。test.py > test.html 我也遇到同样的问题,希望有解决了问题的分享一下... 回复 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]