【发布时间】:2015-09-14 16:29:53
【问题描述】:
我正在尝试编写一个 python 脚本来自动为 pandoc markdown 中的脚注编号。给定这样的输入:
这是一个测试文档,仅用于测试目的。[^0] 这是一个测试 仅用于测试目的的文档。这是用于测试的测试文档 仅供参考。[^121][^5] 这是一个用于测试目的的测试文档 仅限。
[^0]:脚注内容。
[^0]:脚注内容。
[^0]:脚注内容。
它应该产生这样的输出:
这是一个测试文档,仅用于测试目的。[^1] 这是一个测试 仅用于测试目的的文档。这是用于测试的测试文档 仅供参考。[^2][^3] 这是一份用于测试目的的测试文档 仅限。
[^1]:脚注内容。
[^2]:脚注内容。
[^3]:脚注内容。
我已经能够使基本功能正常工作,但我一直在思考如何在一行中包含两个脚注的情况。也许循环不应该是基于行的?或者我应该选择某种嵌套循环,替换第 n 次出现的模式(据我了解,this 问题不是微不足道的)?
由于我试图从中尽可能多地学习,请随时放弃任何 cmets 或指针以进行进一步改进。谢谢!
这是我目前的脚本:
import re
from sys import argv
script, first = argv
i=0
n=0
buff = ''
# open the file specified through the first argument
f = open(first, 'rU')
for line in f:
if re.search(r'\[\^[0-9]+\]:', line):
i += 1
line2 = re.sub(r'\[\^[0-9]+\]:', '[^' + str(i) + ']:', line)
buff += line2
elif re.search(r'\[\^[0-9]+\]', line):
n += 1
line3 = re.sub(r'\[\^[0-9]+\]', '[^' + str(n) + ']', line)
buff += line3
else:
buff += line
print buff
f.close()
【问题讨论】:
标签: python loops substitution