使用Python替换SQL中的特定文本

使用Python替换SQL中的特定文本,python,sql,regex,Python,Sql,Regex,我正在使用Python替换sql文件中的某些字符串。字符串如下所示: <img title="\frac{3}{8}" src="http://latex.codecogs.com/gif.latex?\dpi{50}&amp;space;\fn_phv&amp;space;\frac{3}{8}" alt="" /> 基本上,它包含一部分html代码。但现在我想用以下内容代替: <sup>3</sup>&frasl;<su

我正在使用Python替换sql文件中的某些字符串。字符串如下所示:

<img title="\frac{3}{8}" src="http://latex.codecogs.com/gif.latex?\dpi{50}&amp;space;\fn_phv&amp;space;\frac{3}{8}" alt="" />

基本上,它包含一部分html代码。但现在我想用以下内容代替:

<sup>3</sup>&frasl;<sub>8</sub>
3&frasl;8.
为了在sql文件中替换它,我在Python中使用了这段代码

for line in filedata:
    re.sub(r'<img\b[^<]*(?<=title=")\\frac\{(\d+)\}\{(\d+)\}"[^<]*>', "<sup>\g<1></sup>&frasl;<sub>\g<2></sub>", line)
对于文件数据中的行:
re.sub(r'=

\nx 80=64

','lakshmen K',NULL,'1','0','2015-05-03 15:54:19','0000-00-00:00'),
您的正则表达式没有像您认为的那样工作

filedata1 = re.sub(r'<img\b[^<]*(?<=title=")\\frac\{(\d+)\}\{(\d+)\}"[^<]*>', "<sup>\g<1></sup>&frasl;<sub>\g<2></sub>", filedata)
>a=''
>>>模式=r']
另外,更改replace字符串以使方法工作

import re
with open('/Users/cnnlakshmen/Downloads/qz_question.sql', 'r') as fin:
    filedata = fin.read()

for line in filedata:
    re.sub(r'<img\b[^<]*(?<=title=")\\frac\{(\d+)\}\{(\d+)\}"[^<]*>', "<sup>\g<1></sup>&frasl;<sub>\g<2></sub>", line)

filedata1 = re.sub(r'<img\b[^<]*(?<=title=")\\frac\{(\d+)\}\{(\d+)\}"[^<]*>', "<sup>\g<1></sup>&frasl;<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)
>>sub=“1&frasl;2”
>>>关于sub(模式、sub、a)
'3&frasl;8'

您的正则表达式没有像您认为的那样工作

filedata1 = re.sub(r'<img\b[^<]*(?<=title=")\\frac\{(\d+)\}\{(\d+)\}"[^<]*>', "<sup>\g<1></sup>&frasl;<sub>\g<2></sub>", filedata)
>a=''
>>>模式=r']
另外,更改replace字符串以使方法工作

import re
with open('/Users/cnnlakshmen/Downloads/qz_question.sql', 'r') as fin:
    filedata = fin.read()

for line in filedata:
    re.sub(r'<img\b[^<]*(?<=title=")\\frac\{(\d+)\}\{(\d+)\}"[^<]*>', "<sup>\g<1></sup>&frasl;<sub>\g<2></sub>", line)

filedata1 = re.sub(r'<img\b[^<]*(?<=title=")\\frac\{(\d+)\}\{(\d+)\}"[^<]*>', "<sup>\g<1></sup>&frasl;<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)
>>sub=“1&frasl;2”
>>>关于sub(模式、sub、a)
'3&frasl;8'

使用
r'的方法使用
r'的方法
>>> pattern = r'<img\b[^<]*(?<=title=")\\frac\{\d+\}\{\d+\}"[^<]*>'
>>> re.findall( pattern, a)
['<img title="\\frac{3}{8}" src="http://latex.codecogs.com/gif.latex?\\dpi{50}&amp;space;\\fn_phv&amp;space;\\frac{3}{8}" alt="" />']
>>> sub = "<sup>1</sup>&frasl;<sub>2</sub>"
>>> re.sub(pattern, sub, a)
'<sup>3</sup>&frasl;<sub>8</sub>'
    r'<img\b[^<]*(?<=title=")(?:\\\\small )?\\\\frac\{(\d+)}\{(\d+)}"[^<]*>'