我的文本文件行中有一个字符串,例如:
<img title="\frac{3}{8}" src="http://latex.codecogs.com/gif.latex?\dpi{50}&space;\fn_phv&space;\frac{3}{8}" alt="" />
基本上它包含一个分数的html代码。但现在我想用以下内容替换它:
<sup>3</sup>⁄<sub>8</sub>
所以应该使用“\ frac {3} {8}”这个词,并相应地替换每一行。 “\ frac {3} {8}”这个词也会相应改变。
我知道我需要使用正则表达式,但需要指导才能做到这一点。
我的代码:
with open('/Users/cnnlakshmen/Downloads/qz_question.sql', 'r') as fin:
filedata = fin.read()
filedata1 = re.sub(r'<img\b[^<]*(?<=title=")\\frac\{(\d+)\}\{(\d+)\}"[^<]*>', "<sup>\g<1></sup>⁄<sub>\g<2></sub>", filedata)
print filedata1
# Write the file out again
with open('/Users/cnnlakshmen/Downloads/qz_question1.sql', 'w') as fin:
fin.write(filedata1)
答案 0 :(得分:0)
假设数字是正整数
pattern = '\\frac\{(\d+)\}\{(\d+)\}'
或者对于正/负,整数和小数
pattern = '\\frac\{(-?\d+\.?[\d?]*)\}'
replaceWith: '<sup>\1</sup>⁄<sub>\2</sub>'
import re
regex = re.compile(pattern)
re.sub(regex, replaceWith, inputString)
答案 1 :(得分:0)
您可以使用
替换整个img
代码
<img\b[^<]*\btitle="\\frac\{(\d+)\}\{(\d+)\}"[^<]*>
替换为
<sup>\1</sup>⁄<sub>\2</sub>
请参阅demo
import re
p = re.compile(r'<img\b[^<]*\btitle="\\frac\{(\d+)\}\{(\d+)\}"[^<]*>')
test_str = "<img title=\"\\frac{3}{8}\" src=\"http://latex.codecogs.com/gif.latex?\dpi{50}&space;\\fn_phv&space;\\frac{3}{8}\" alt=\"\" />"
subst = "<sup>\g<1></sup>⁄<sub>\g<2></sub>"
print re.sub(p, subst, test_str)